【发布时间】:2015-01-09 11:51:51
【问题描述】:
是否可以重新定义 QTreeView 中某些单独行的行高?
我有一个自定义QTreeView、自定义QAbstractItemModel 和一个自定义QStyledItemDelegate,但似乎所有sizeHint 方法要么只调用一次(最初),要么在基类中不是虚拟的。
Qt 版本 4.7.4,无法升级到 5。
任何帮助表示赞赏。
【问题讨论】:
-
有 SizeHintRole,当这个角色请求时,尝试在你的 data() 方法中返回 QSize(int,int)。
-
同样的行为:data() 方法只在设置了 SizeHintRole 的情况下被调用一次!
-
因此,如果您需要再次调用数据来更新某些内容,那么通常的做法是从模型中发出带有所需 QModelIndex 的 dataChanged 信号,不是吗?
-
也许我不够明确。带有
SizeHintRole集的QAbstractItemModel::data()方法只对整个树调用一次,而不是像预期的那样对每个项目调用一次。是的,一旦模型中的数据发生变化,我就会发出dataChanged信号。目前,模型仅在初始化期间更改一次。