首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >打印QModelIndex与QModelIndex.model():不同的十六进制值?

打印QModelIndex与QModelIndex.model():不同的十六进制值?
EN

Stack Overflow用户
提问于 2015-04-22 21:11:05
回答 1查看 224关注 0票数 1

在Pyside中打印QModelIndex时,对象表示会显示行、列、父级、模型和内存地址。但是,如果打印出index.model(),则模型的内存地址是不同的。

这里有一些代码演示了我的意思:

代码语言:javascript
复制
from PySide import QtGui, QtCore

class TestQModelIndexModelWin(QtGui.QMainWindow):
    def __init__(self,  parent=None):
        super(TestQModelIndexModelWin, self).__init__(parent)

        self.listView = QtGui.QListView()
        self.setCentralWidget(self.listView)

        listModel = QtGui.QStringListModel(['foo', 'bar', 'baz'])
        self.listView.setModel(listModel)

        numItems = len(listModel.stringList())
        for i in range(numItems):
            index = listModel.index(i, 0)
            print index
            print index.model()

运行此代码时,结果如下所示:

代码语言:javascript
复制
<PySide.QtCore.QModelIndex(0,0,0x0,QStringListModel(0xef1b7e0) )   at 0x0000000017656D08>
<PySide.QtGui.QStringListModel object at 0x0000000017656948>
<PySide.QtCore.QModelIndex(1,0,0x0,QStringListModel(0xef1b7e0) )   at 0x00000000176564C8>
<PySide.QtGui.QStringListModel object at 0x0000000017656948>
<PySide.QtCore.QModelIndex(2,0,0x0,QStringListModel(0xef1b7e0) )   at 0x0000000017656D08>
<PySide.QtGui.QStringListModel object at 0x0000000017656948>

为什么QModelIndex将QStringListModel十六进制值显示为0xef1b7e0,而QStringListModel将其地址显示为0x0000000017656948

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-22 22:31:17

repr for index正在显示与其关联的模型的C++地址。而repr for index.model()则显示了包装C++模型的python对象的地址。

您可以通过使用shiboken模块来验证这一点:

代码语言:javascript
复制
import shiboken
...

    print index
    print index.model()
    print shiboken.dump(index.model())

它将产生这样的产出:

代码语言:javascript
复制
<PySide.QtCore.QModelIndex(2,0,0x0,QStringListModel(0x17b0b40) )   at 0x7ff1a3715998>
<PySide.QtGui.QStringListModel object at 0x7ff1a3715950>
C++ address....... PySide.QtGui.QStringListModel/0x17b0b40
hasOwnership...... 1
containsCppWrapper 1
validCppObject.... 1
wasCreatedByPython 1
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29808928

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档