【发布时间】:2014-12-18 10:30:51
【问题描述】:
短版
在为树模型重新实现index 时,为什么我们要先检查相关项是否已经有索引(使用hasIndex),如果没有则返回根索引?为该项目创建索引不是重点吗?
详细版
考虑在 PySide 的 simpletreemodel 示例中重新实现 index(完整代码如下)。我的理解是index 方法旨在获取特定项目的行、列和父索引,并使用createIndex 返回该项目的索引。但是index 方法以以下几行打开:
if not self.hasIndex(row, column, parent):
return QtCore.QModelIndex()
我在这里有点困惑。如果项目没有已经有效索引,为什么要返回根索引?这种方法首先是如何创建索引的?当我剪掉以上几行时,我在应用程序中看不到任何有害影响。
由于我试图尽可能简化 PySide 示例,因此我只想删除这两行。这会产生不可预见的不良后果吗?
相关代码
def index(self, row, column, parent):
if not self.hasIndex(row, column, parent):
return QtCore.QModelIndex()
if not parent.isValid():
parentItem = self.rootItem
else:
parentItem = parent.internalPointer()
childItem = parentItem.child(row)
if childItem:
return self.createIndex(row, column, childItem)
else:
return QtCore.QModelIndex()
【问题讨论】: