QTreeWidgetItem的PyQt运行时错误

时间:2014-01-29 20:39:59

标签: python pyqt runtime-error qcombobox qtreewidgetitem

当我删除基础C / C ++对象时,我试图避免众所周知的PyQt运行时错误:

http://www.riverbankcomputing.com/pipermail/pyqt/2009-April/022809.html

PyQt4 - "RuntimeError: underlying C/C object has been deleted"

PyQt4 nested classes - "RuntimeError: underlying C/C++ object has been deleted"

PyQt: RuntimeError: wrapped C/C++ object has been deleted

我的每个子类都调用super()方法,因此正确构造了基类。

仍然,我收到此错误,我想知道是否是因为我正在向QComboBox添加QTreeWidgetItem窗口小部件(使用setItemWidget()方法{ {1}})但我无法将父级设置为包含它的QTreeWidget。当我尝试时,我收到以下错误:

QTreeWidgetItem

当然,我可以省略构造函数中的父项,也可以将TypeError: QComboBox(QWidget parent=None): argument 1 has unexpected type 'QTreeWidgetItem' 作为父项传递,但我认为我需要引用正确的父项。

我已经将QTreeWidget子类化了,并且在我的子类中它在QComboBox上运行了一些基本操作,但是一旦我输入了我的子类QTreeWidget的方法,底层的C对象对于包含QComboBox的父QTreeWidgetItem的删除(这就是为什么我认为它与设置QComboBox的父级有关。)

我理解运行时错误中有9次是由于没有构造基类。但由于排除了这种错误,该怎么办?是不是因为没有引用正确的父母?

修改

当使用新的组合框选择时,我正在使用QComboBox发出信号。在新选择时,它将所选值添加到PyXB XML节点。有趣的是,只有当我将值附加到PyXB类绑定并将信息永久存储在XML文件中时,才会出现此问题。换句话说,如果代码的那部分没有运行,我就不会得到错误 - 只有当代码运行PyXB操作以将值附加到XML节点绑定时...

1 个答案:

答案 0 :(得分:2)

我通常会避免在我的课程中引用所有可能被删除的对象(例如QComboBox)的错误,因此在创建时请尝试self.comboBoxHolder = QComboBox(...)之类的内容。