【发布时间】:2014-12-18 04:02:38
【问题描述】:
在 PyQt/PySide 中使用 QtCore.QAbstractItemModel.createIndex(row, col, pointer) 创建索引很常见。 In the PySide documentation这个方法描述如下:
PySide.QtCore.QAbstractItemModel.createIndex(row, column, ptr)
为给定的行和列创建一个模型索引,其内部 指针指针
我的问题是 Python 中的第三个参数是什么意思,因为 Python 实际上并不使用指针?下面是一个典型的使用方法的例子(在这个例子中是一个返回父节点索引的方法,给定子节点的索引):
def parent(self, index):
childItem = index.internalPointer()
parentItem = childItem.parent()
return self.createIndex(parentItem.row(), 0, parentItem)
虽然我们使用internalPointer() 来提取子项,但这不是createIndex() 的第三个输入[编辑:即使是,因为它是python,它不会是指针,原因在下段落]。相反,createIndex() 的第三个输入只是父项(不是指向父项的指针)。所以看起来我根本没有给它一个指针,而只是我在一个名为 internalPointer 的方法的帮助下提取的另一个对象。
createIndex 的第三个输入真的是一个指针吗(根据文档)?或者我们应该把它称为一个项目并消除指针的讨论?
请注意,此问题基于 PySide (documentation for Qt version) 附带的 simpletreemodel 示例。模块simpletreemodel.py位于\PySide\examples\itemviews\simpletreemodel。
我在 QtCentre 发布了这个问题的一个版本: http://www.qtcentre.org/threads/59747-Is-third-input-to-createIndex-really-a-pointer
【问题讨论】: