Кажется, что проблема в том, что QColorDialog.color () показывает модальное диалоговое окно, которое берет фокус из комбинированного списка, который сразу после этого закрывается, а затем делегат уничтожает его ...
Итак, обходной путь для решения таких проблем - прерывание события:
В делегате:
def eventFilter(self, editor, event):
if event.type() == QtCore.QEvent.FocusOut and hasattr(editor, 'canFocusOut'):
if not editor.canFocusOut: return False
return QtGui.QItemDelegate.eventFilter(self, editor, event)
В редакторе мы должны ввести флаг self.canFocusOut и установить его в значение true, когда FocusOut запрещен. Я делаю это, когда «подсвеченный» сигнал срабатывает на элементе, который показывает QColorDialog.