вторник, 23 апреля 2019 г.

QTreeView items spacing

Как сделать отступ между элементами QTreeView?

Первый и простой способ - заюзать styleSheet.

my_tree_->setStyleSheet(".QTreeView::item{ margin: 0px 6px 6px 6px; border: 0;}");

Второй тру способ заюзать делегата.
my_tree_->setItemDelegate(new MyItemDelegate(this));

MyItemDelegate::MyItemDelegate(QObject * parent)
: QItemDelegate(parent)
{
}

QSize MyItemDelegate::sizeHint(const QStyleOptionViewItem & option, const QModelIndex & index) const
{
   QSize sz = QItemDelegate::sizeHint(option, index);
   sz.setHeight(sz.height() + 10);//накидываем 10 пикселей по 5 сверху и снизу
   return sz;
}

void MyItemDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option,
   const QModelIndex &index) const
{
   QStyleOptionViewItemV3 opt = option;
   opt.rect.adjust(0, 0, -5, -5);//немножко уменьшаем размер item для отрисовки
   QItemDelegate::paint(painter, opt, index);//рисуем
}
Вот таким нехитрым способом можно сделать отступы между элементами, мать их, убил на это полдня.
У QListView есть setSpacing, которого нет у QTreeView.



Комментариев нет:

Отправить комментарий