我使用TreeViews
和AbstractItemModels
做了一些不同的应用程序,但是遇到了一些我不理解的东西。我意识到视图正在调用模型的data
函数,要求项目使用Size
,因为角色是SizeHintRole(see Qt Documentation)。在所有其他情况下,我从没回想过要担心为size
函数返回data
的问题。在下面的代码中,我错误地期望data
只在查找列表中的项目,并且如果您取消注释第一行,该视图将不显示任何内容,因为实际上该视图正在请求{{1} }。
我的问题是,什么情况下需要这样做?我从来不需要提供sizeHint
,而且我也不了解何时需要和何时不需要。
注释第一行时的窗口
启用第一行时的窗口,因此忽略sizeHint请求
sizeHint
答案 0 :(得分:2)
默认情况下,为所有角色返回self.root._items[index.row()]
毫无意义。您应该始终显式检查角色,并且仅返回适合该特定角色的值。如果您没有角色的特定数据,则应在PyQt中返回None
(相当于C ++中的无效QVariant
)。
有关基本要求的概述,请参见Model Subclassing Reference。