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
(使用QTreeWidget
的setItemWidget()
方法),但是我不能将父对象设置为包含它的QTreeWidgetItem
。当我尝试时,我得到以下错误:
TypeError: QComboBox(QWidget parent=None): argument 1 has unexpected type 'QTreeWidgetItem'
当然,我可以省略构造函数中的父对象,也可以将QTreeWidget
作为父对象传递,但我认为我需要引用正确的父对象。在
我已经对QComboBox
进行了子类化,并且在我的子类中它对QTreeWidget
运行一些基本操作,但是一旦我进入子类QComboBox
的方法,包含QComboBox
的父QTreeWidgetItem
的底层C对象就被删除了(这就是为什么我认为这与设置{
我知道10次中有9次运行时错误是因为没有构造基类。但排除了这一点,还有什么会出错呢?可能是因为没有引用正确的父对象吗?在
编辑
我正在使用QComboBox在新的组合框选择时发出信号。在进行新的选择时,它将所选值添加到PyXB XML节点。有趣的是,只有在将值附加到PyXB类绑定(将信息永久存储在XML文件中)时,才会出现此问题。换言之,如果这部分代码没有运行,我不会得到错误消息-只有当代码运行PyXB操作将值附加到XML节点绑定时。。。在
我通常避免在类上保留对所有易被删除的对象的引用,比如您的
QComboBox
,所以在创建它时尝试类似self.comboBoxHolder = QComboBox(...)
的方法。在相关问题 更多 >
编程相关推荐