Сетка QTreeView

401
01 сентября 2017, 23:35

У QTreeView него нет метода аналогичного QTableView::setShowGrid. И как теперь отобразить сетку?

Answer 1

Как вариант можно с помощью делегата.

    void GridLineDelegate::paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const
{
  QStyledItemDelegate::paint(painter, option, index);
  if (index.isValid())
  {
    painter->setPen(Qt::SolidLine);
    painter->setPen(QColor(Qt::lightGray));
    painter->drawLine(QLine(option.rect.bottomLeft(), option.rect.bottomRight()));
    painter->drawLine(QLine(option.rect.topRight(), option.rect.bottomRight()));
  }
}

А затем

ui->treeView->setItemDelegate(new GridLineDelegate(ui->treeView));
Answer 2

Самое простое решение, которое мне удалось найти, это использование стилей:

QTreeView *view = new QTreeView(this);
view->setStyleSheet("*::item{"
                    "    border-top-width: 0px;"
                    "    border-right-width: 1px;"
                    "    border-bottom-width: 1px;"
                    "    border-left-width: 0px;"
                    "    border-style: solid;"
                    "    border-color: silver;"
                    "}"
                    "*::item:selected{"
                    "    background: palette(Highlight);"
                    "}");

По какой-то причине выделенные ячейки перестали подсвечиваться. Поэтому пришлось дополнительно описать *::item:selected.

READ ALSO
С++ Как добавить программу в автозагрузку без прав администратора

С++ Как добавить программу в автозагрузку без прав администратора

Написал я маленькую программу, которая в свою очередь запускает другую программуИ мне нужно добавить первую программу в автозагрузу желательно...

459
Программа не запускается без dll

Программа не запускается без dll

Написал программу на c++В ней есть функции: запуск программы, добавление записи в реестр, цикл и пара функций, а также несколько поключенных...

425
Положение дочернего окна

Положение дочернего окна

Какая функция вернет положение управляющего элемента RECT{50,30,300,80}?

350