什么触发QTreeView在QAbstractItemModel.data()函数中请求SizeHintRole

时间:2018-11-01 15:07:19

标签: python pyqt qtreeview qabstractitemmodel

我使用TreeViewsAbstractItemModels做了一些不同的应用程序,但是遇到了一些我不理解的东西。我意识到视图正在调用模型的data函数,要求项目使用Size,因为角色是SizeHintRole(see Qt Documentation)。在所有其他情况下,我从没回想过要担心为size函数返回data的问题。在下面的代码中,我错误地期望data只在查找列表中的项目,并且如果您取消注释第一行,该视图将不显示任何内容,因为实际上该视图正在请求{{1} }。

我的问题是,什么情况下需要这样做?我从来不需要提供sizeHint,而且我也不了解何时需要和何时不需要。

注释第一行时的窗口

enter image description here

启用第一行时的窗口,因此忽略sizeHint请求

enter image description here

sizeHint

1 个答案:

答案 0 :(得分:2)

默认情况下,为所有角色返回self.root._items[index.row()]毫无意义。您应该始终显式检查角色,并且仅返回适合该特定角色的。如果您没有角色的特定数据,则应在PyQt中返回None(相当于C ++中的无效QVariant)。

有关基本要求的概述,请参见Model Subclassing Reference