QTreeWidgetItem的PyQt运行时错误

2024-05-15 18:07:10 发布

您现在位置:Python中文网/ 问答频道 /正文

<> P>我试图避免当基础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(使用QTreeWidgetsetItemWidget()方法),但是我不能将父对象设置为包含它的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节点绑定时。。。在


Tags: 对象方法object错误xml子类haspyqt4
1条回答
网友
1楼 · 发布于 2024-05-15 18:07:10

我通常避免在类上保留对所有易被删除的对象的引用,比如您的QComboBox,所以在创建它时尝试类似self.comboBoxHolder = QComboBox(...)的方法。在

相关问题 更多 >