У меня есть измененное поле со списком, чтобы удерживать цвета, используя QtColorCombo (http://qt.nokia.com/products/appdev/add-on-products/catalog/4/Widgets/qtcolorcombobox) как как для деталей реализации кнопки «подробнее ...». Он отлично работает на C++ и в PyQt на linux, но при использовании этого элемента управления в PyQt в Windows я получаю «базовый объект C++». Он выглядит следующим образом:«Объект C++ уничтожен» в редакторе потомков QComboBox в делегате
...
# in constructor:
self.activated.connect(self._emitActivatedColor)
...
def _emitActivatedColor(self, index):
if self._colorDialogEnabled and index == self.colorCount():
print '!!!!!!!!! QtGui.QColorDialog.getColor()'
c = QtGui.QColorDialog.getColor() # <----- :(delegate fires 'closeEditor'
print '!!!!!!!!! ' + c.name()
if c.isValid():
self._numUserColors += 1
#at the next line currentColor() tries to access C++ layer and fails
self.addColor(c, self.currentColor().name())
self.setCurrentIndex(index)
...
Возможно, консольный выход поможет. Я перекрытый событие() в редакторе и получил:
- MouseButtonRelease
- FocusOut
- Оставить
- Краска
- Введите
- Оставить
- FocusIn
- !!!! !!!!! QtGui.QColorDialog.getColor()
- WindowBlocked
- Краска
- WindowDeactivate
- !!!!!!!!! «ЗакрытьEditor» срабатывает!
- Скрыть
- HideToParent
- FocUsOut
- DeferredDelete
- !!!!!!!!! # 6e6eff
Может кто-нибудь объяснить, почему существует такое другое поведение в разных средах и, возможно, обходное решение, чтобы исправить это. Вот минимальный пример: http://docs.google.com/Doc?docid=0Aa0otNVdbWrrZDdxYnF3NV80Y20yam1nZHM&hl=en