如何描述PyQt/PySide中createIndex的“指针”参数?

2024-06-16 15:16:41 发布

您现在位置:Python中文网/ 问答频道 /正文

在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


Tags: the方法indexdocumentationcolumnrowpyside指针
1条回答
网友
1楼 · 发布于 2024-06-16 15:16:41

不要将名称中的pointer作为文本“C指针”。正如在docs中所解释的,它“被模型用来将索引与内部数据结构相关联”。因此,给定一个QModelIndex你应该能够将其映射到内部结构。为此,internalPointer可以是任何有助于您实现这一点的东西。这在树模型中尤其必要,因为row和{}本身不能完全识别层次模型中的项目。在

相关问题 更多 >