QTreeView自定义各行的行高
QTreeView custom row height of individual rows
是否可以重新定义 QTreeView
中某些单独行的行高?
我有一个自定义 QTreeView
、自定义 QAbstractItemModel
和一个自定义 QStyledItemDelegate
,但似乎所有 sizeHint
方法都只调用一次(最初)或者在基类中不是虚拟的。
Qt 版本 4.7.4,无法升级到 5。
感谢任何帮助。
重新实现委托的 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);
是否可以重新定义 QTreeView
中某些单独行的行高?
我有一个自定义 QTreeView
、自定义 QAbstractItemModel
和一个自定义 QStyledItemDelegate
,但似乎所有 sizeHint
方法都只调用一次(最初)或者在基类中不是虚拟的。
Qt 版本 4.7.4,无法升级到 5。
感谢任何帮助。
重新实现委托的 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);