От макушки головы вы можете создать подкласс QComboBox
и переопределить hideEvent(QHideEvent)
(унаследовано от QWidget
)
def hideEvent(self, event):
if self.OkToHide():
event.accept()
else:
event.ignore()
Ваш скриншот выглядит как интересное использование поля со списком, мне интересно, почему вы не использовали элемент управления в стиле TreeView
вместо списка?
Редактировать (14 марта 2009 г.):
Я посмотрел на исходный код Qt, и похоже, что когда регистрируются события клавиатуры и мыши, как только qt решил испустить сигнал "activated(int index)"
, был вызван "hidePopup()"
.
Таким образом, кроме переписывания кода фильтра событий, другой вариант - подключить сигнал "activated(int index)"
или "highlighted(int index)"
к слоту, который может вызвать "showPopup()"
, что приведет к повторному поднятию элементов списка. Если у вас появляется неприятная проблема исчезновения / появления краски, вам может потребоваться Qt, чтобы отложить события рисования, пока всплывающее окно видно.
Надеюсь, это поможет!