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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Перехват установки фокуса на диалог  (Прочитано 2270 раз)
Yegor
Гость
« : Май 11, 2013, 20:11 »

Здравствуйте!

Имеется диалог. На нем находятся разные виджеты: кнопки, таблицы и так далее.
Нужно перехватить установку фокуса на диалог.

Для этого существует защищенный виртуальный метод: void QWidget::focusInEvent ( QFocusEvent * event ) [virtual protected].
Но он срабатывает только если щелкать по самому диалогу, по его телу, по фону. Ну а если щелкать по его дочерним виджетам (кнопкам, таблицам и т.д.), то виртуальный метод focusInEvent не срабатывает.

Мне же нужно перехватьть установку фокуса на диалог и тогда когда щелкать по кнопкам диалога.

Подскажите, пожалуйста, как это сделать.
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4744



Просмотр профиля WWW
« Ответ #1 : Май 12, 2013, 00:36 »

eventFilter вешаешь на все свои дочерние контролы
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Yegor
Гость
« Ответ #2 : Май 13, 2013, 08:58 »

А есть ли более простой способ?
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #3 : Май 13, 2013, 10:35 »

А есть ли более простой способ?
В focusInEvent()/focusOutEvent() диалога испускай сигнал, например focusChanged( bool ), на который законнекть потомков.
Либо задействуй
Код
C++ (Qt)
void QApplication::focusChanged( QWidget* old, QWidget* now ) [signal]
« Последнее редактирование: Май 13, 2013, 10:37 от GreatSnake » Записан

Qt 5.11/4.8.7 (X11/Win)
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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