Я пытаюсь избежать известной ошибки выполнения PyQt при удалении базового объекта C/C++:
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
, базовый объект C для родительского QTreeWidgetItem
, содержащий QComboBox
, удаляется (именно поэтому я я думаю, что это как-то связано с настройкой родителя QComboBox
).
Я понимаю, что в 9 случаях из 10 ошибка времени выполнения связана с отсутствием построения базового класса. Но если это исключено, как еще может возникнуть ошибка? Может ли это быть связано с тем, что не указан правильный родитель?
ИЗМЕНИТЬ
Я использую QComboBox, чтобы сигнализировать, когда был сделан новый выбор со списком. При новом выборе он добавляет это выбранное значение в XML-узел PyXB. Интересно, что эта проблема возникает только в том случае, если я добавляю значение к привязке класса PyXB, постоянно сохраняя информацию в файле XML. Другими словами, если эта часть кода не запускается, я не получаю ошибку - только когда код запускает операцию PyXB для добавления значения к привязке узла XML...