QTreeView自定义行的各行高度

mef*_*fiX 1 qt qt4 qt5

是否有可能重新定义某些行中某些行的行高QTreeView

我有自定义QTreeView,自定义QAbstractItemModel和自定义QStyledItemDelegate,但似乎所有sizeHint方法只调用一次(最初)或在基类中不是虚拟的.

Qt版本4.7.4,没有升级到5可能.

任何帮助赞赏.

use*_*165 6

重新实现委托的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);
      }
};
Run Code Online (Sandbox Code Playgroud)

用法:

 QTreeView view;
 ItemDelegate *delegate = new ItemDelegate;
 view.setItemDelegate(delegate);
Run Code Online (Sandbox Code Playgroud)

  • @mefiX可能,你是关于http://qt-project.org/doc/qt-4.8/qtreeview.html#uniformRowHeights-prop (3认同)