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);