如果未分配给 PySide 中的对象变量,对象似乎会被删除

Aki*_*oss 1 python qt4 pyside

我试图使用 QStandardItemModel 来表示数据的层次结构,但是当我将 QStandardItems 添加到模型中时,我必须将它们分配在对象成员变量中,否则对象似乎被删除。

例如

self.tree_model = QStandardItemModel()
self.tree_model.setHorizontalHeaderLabels(['Category'])
self.out_insertions = QStandardItem("Insertions")
self.tree_model.invisibleRootItem().appendRow(self.out_insertions)
Run Code Online (Sandbox Code Playgroud)

按预期工作(“插入”行插入到“类别”列下)。但是如果我删除 self.out_insertion 赋值,例如:

self.tree_model = QStandardItemModel()
self.tree_model.setHorizontalHeaderLabels(['Category'])
self.tree_model.invisibleRootItem().appendRow(QStandardItem("Insertions"))
Run Code Online (Sandbox Code Playgroud)

它不起作用(显示空行)。

我正在使用 Qt 4.6.3 和 PySide 0.4.1。有人可以解释一下为什么会发生这种情况吗?

提前致谢

~亚纪

Chr*_*heD 5

你的对象被垃圾收集,因为不再存在对它的(Python)引用。

PyQt 文档中的“需要注意的事项”中描述了此行为。

大多数这些问题(在 PyQt 领域)可以通过纠正来避免parenting(这使得 Qt 取代 PyQt 取得所有权)。