是否可以重新定义QTreeView
内某些行的行高?
我有自定义QTreeView
,自定义QAbstractItemModel
和自定义QStyledItemDelegate
,但似乎所有sizeHint
方法只调用一次(最初)或者在基类中不是虚拟的。
Qt版本4.7.4,无法升级到5。
任何帮助表示感谢。
答案 0 :(得分: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);