Russian Qt Forum
Сентябрь 30, 2024, 16:24 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QComboBox - состояние  (Прочитано 5127 раз)
mal
Гость
« : Декабрь 31, 2009, 16:42 »

Как проверить состояние комбобокса - showPopup  он в данный момент или hidePopup ?  Непонимающий
Записан
Dendy
Гость
« Ответ #1 : Декабрь 31, 2009, 17:11 »

Так? comboBox->view()->isVisible()
Записан
Karl-Philipp
Гость
« Ответ #2 : Декабрь 31, 2009, 17:17 »

а можно ли так сделать:

Переопределить void QComboBox::showPopup (), void QComboBox::hidePopup ()  . B них имитировать сигнал, связанный со слотом, который будет устанавливать значение некоторой переменной типа bool isComboPopup.
Записан
mal
Гость
« Ответ #3 : Декабрь 31, 2009, 17:29 »

Dendy

Да, так работает, но есть проблемка:
Я переопределяю в QComboBox keyPressEvent, чтоб раскрывать его по нужной мне клавише.
Когда QComboBox в закрытом состоянии keyPressEvent ловиться. А когда раскрыт - фокус находится в comboBox->view().
Соответственно поймать keyPressEvent , чтоб  закрыть QComboBox, уже не получается.
Возможно следует попробовать то, что предлагает terlan.
Или есть другой путь? Не хотелось бы наследоваться еще и от QAbstractItemView  и ловить keyPressEvent в нем Улыбающийся

Или установить eventFilter на view  комбобокса?
« Последнее редактирование: Декабрь 31, 2009, 17:43 от mal » Записан
Dendy
Гость
« Ответ #4 : Декабрь 31, 2009, 17:53 »

Если это горячая клавиша, то её можно установить глобально с помощью QShortcut. Если же через событие - то наследоваться не нужно, пользуйтесь eventFilter(). Попробуйте фильтровать comboBox->view() и comboBox->view()->viewport() на предмет нужной клавиши.
Записан
mal
Гость
« Ответ #5 : Декабрь 31, 2009, 17:56 »

Так и сделал :
Если комбобокс находиться в состоянии hide, ловлю keyPressEvent в нем.
Установил eventFilter  для view комбобокса, и keyPressEvent из view обрабатываю в eventFilter комбобокса.
Проблема решена.  Веселый
Всем спасибо.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.088 секунд. Запросов: 21.