在PyQt/PySide中,使用QtCore.QAbstractItemModel.createIndex(行、列、指针)。In the PySide documentation此方法描述如下:
PySide.QtCore.QAbstractItemModel.createIndex(row, column, ptr)
Creates a model index for the given row and column with the internal pointer ptr
我的问题是第三个参数在Python中是什么意思,因为Python实际上并不使用指针?以下是所使用方法的典型示例(在本例中,在给定子节点索引的情况下,返回父节点的索引的方法):
def parent(self, index):
childItem = index.internalPointer()
parentItem = childItem.parent()
return self.createIndex(parentItem.row(), 0, parentItem)
虽然我们使用internalPointer()
来提取子项,但这并不是createIndex()
[edit:的第三个输入,即使是这样,因为它是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
不要将名称中的}本身不能完全识别层次模型中的项目。在
pointer
作为文本“C指针”。正如在docs中所解释的,它“被模型用来将索引与内部数据结构相关联”。因此,给定一个QModelIndex
你应该能够将其映射到内部结构。为此,internalPointer
可以是任何有助于您实现这一点的东西。这在树模型中尤其必要,因为row
和{相关问题 更多 >
编程相关推荐