我正在尝试使用QStandardItemModel来表示数据的层次结构,但是当我将QStandardItems添加到模型时,我必须在对象成员变量中分配它们,否则对象似乎被删除。
例如
self.tree_model = QStandardItemModel()
self.tree_model.setHorizontalHeaderLabels(['Category'])
self.out_insertions = QStandardItem("Insertions")
self.tree_model.invisibleRootItem().appendRow(self.out_insertions)
按预期工作(在“类别”列下插入“插入”行)。但是,如果我删除self.out_insertion赋值,例如:
self.tree_model = QStandardItemModel()
self.tree_model.setHorizontalHeaderLabels(['Category'])
self.tree_model.invisibleRootItem().appendRow(QStandardItem("Insertions"))
它不起作用(显示空行)。
我正在使用Qt 4.6.3和PySide 0.4.1。 有人可以解释一下为什么会这样吗?
提前致谢
〜秋
答案 0 :(得分:4)
您的对象会收集垃圾,因为不再存在(Python)对它的引用。
PyQt文档中的“things to be aware of”中描述了这种行为。
大多数问题(在PyQt中)可以通过纠正parenting
来避免(这使得Qt取得所有权而不是PyQt)。