Название: QComboBox - состояние Отправлено: mal от Декабрь 31, 2009, 16:42 Как проверить состояние комбобокса - showPopup он в данный момент или hidePopup ? ???
Название: Re: QComboBox - состояние Отправлено: Dendy от Декабрь 31, 2009, 17:11 Так? comboBox->view()->isVisible()
Название: Re: QComboBox - состояние Отправлено: Karl-Philipp от Декабрь 31, 2009, 17:17 а можно ли так сделать:
Переопределить void QComboBox::showPopup (), void QComboBox::hidePopup () . B них имитировать сигнал, связанный со слотом, который будет устанавливать значение некоторой переменной типа bool isComboPopup. Название: Re: QComboBox - состояние Отправлено: mal от Декабрь 31, 2009, 17:29 Dendy
Да, так работает, но есть проблемка: Я переопределяю в QComboBox keyPressEvent, чтоб раскрывать его по нужной мне клавише. Когда QComboBox в закрытом состоянии keyPressEvent ловиться. А когда раскрыт - фокус находится в comboBox->view(). Соответственно поймать keyPressEvent , чтоб закрыть QComboBox, уже не получается. Возможно следует попробовать то, что предлагает terlan. Или есть другой путь? Не хотелось бы наследоваться еще и от QAbstractItemView и ловить keyPressEvent в нем :) Или установить eventFilter на view комбобокса? Название: Re: QComboBox - состояние Отправлено: Dendy от Декабрь 31, 2009, 17:53 Если это горячая клавиша, то её можно установить глобально с помощью QShortcut. Если же через событие - то наследоваться не нужно, пользуйтесь eventFilter(). Попробуйте фильтровать comboBox->view() и comboBox->view()->viewport() на предмет нужной клавиши.
Название: Re: QComboBox - состояние Отправлено: mal от Декабрь 31, 2009, 17:56 Так и сделал :
Если комбобокс находиться в состоянии hide, ловлю keyPressEvent в нем. Установил eventFilter для view комбобокса, и keyPressEvent из view обрабатываю в eventFilter комбобокса. Проблема решена. :D Всем спасибо. |