[英]PyQt Runtime Error of QTreeWidgetItem
當底層的C / C ++對象被刪除時,我試圖避免眾所周知的PyQt運行時錯誤:
http://www.riverbankcomputing.com/pipermail/pyqt/2009-April/022809.html
PyQt4-“ RuntimeError:基礎C / C對象已被刪除”
PyQt4嵌套類-“ RuntimeError:基礎C / C ++對象已被刪除”
PyQt:RuntimeError:包裝的C / C ++對象已被刪除
我的每個子類都調用super()
方法,因此正確地構造了基類。
不過,我得到這個錯誤,我想知道如果是由於這樣的事實,我加入一個QComboBox
控件到QTreeWidgetItem
(使用setItemWidget()
一個方法QTreeWidget
),但我不能設置父為QTreeWidgetItem
包含它。 當我嘗試時,出現以下錯誤:
TypeError: QComboBox(QWidget parent=None): argument 1 has unexpected type 'QTreeWidgetItem'
當然,我可以在構造函數中省略父級,也可以將QTreeWidget
作為父級傳遞,但是我認為我需要引用正確的父級。
我已經將QComboBox
進行了子類化,並且在我的子類中它對QTreeWidget
進行了一些基本操作,但是一旦我進入子類QComboBox
的方法,就會刪除包含QComboBox
的父QTreeWidgetItem
的基礎C對象(這就是為什么我我認為這與設置QComboBox
的父級有關。
我了解10次中有9次運行時錯誤是由於未構造基類而引起的。 但是,如果排除了該錯誤,該錯誤還會如何發生? 可能是由於未引用正確的父母嗎?
編輯
我正在使用QComboBox發出何時選擇新的組合框的信號。 進行新選擇后,它將選擇的值添加到PyXB XML節點。 有趣的是,僅當我將值附加到將信息永久存儲在XML文件中的PyXB類綁定中時,才會發生此問題。 換句話說,如果代碼的那部分沒有運行,我不會得到錯誤-僅當代碼運行將值附加到XML節點綁定的PyXB操作時,才會出現此錯誤...
我通常會避免此類錯誤,因為此類錯誤會在類上保留對所有容易被刪除的對象(例如QComboBox
的引用,因此在創建它時,請嘗試使用諸如self.comboBoxHolder = QComboBox(...)
東西。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.