QTreeView пользовательская высота строки отдельных строк
Можно ли переопределить высоту строки отдельных строк в пределах QTreeView
?
У меня есть обычай QTreeView
, обычай QAbstractItemModel
и обычай QStyledItemDelegate
, но кажется, что все sizeHint
методы либо вызываются только один раз (изначально), либо не являются виртуальными в базовых классах.
Qt версии 4.7.4, обновление до 5 невозможно.
Любая помощь приветствуется.
1 ответ
Решение
Переопределите делегат sizeHint(). Нашел пример в моем производственном коде. Это показано упрощенно ниже. В этом примере дерево может содержать изображения. Поэтому размеры ячеек должны быть скорректированы для размещения изображений.
class ItemDelegate : public QItemDelegate
{
public:
QSize sizeHint ( const QStyleOptionViewItem & option, const QModelIndex & index ) const
{
const TreeItem* ti(static_cast<TreeItem*>(index.internalPointer()));
if(ti->pixmap())
return ti->pixmap()->size();
QItemDelegate::sizeHint(option,index);
}
};
Использование:
QTreeView view;
ItemDelegate *delegate = new ItemDelegate;
view.setItemDelegate(delegate);