Russian Qt Forum

Qt => Вопросы новичков => Тема начата: Yegor от Май 11, 2013, 20:11



Название: Перехват установки фокуса на диалог
Отправлено: Yegor от Май 11, 2013, 20:11
Здравствуйте!

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

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

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

Подскажите, пожалуйста, как это сделать.


Название: Re: Перехват установки фокуса на диалог
Отправлено: kambala от Май 12, 2013, 00:36
eventFilter вешаешь на все свои дочерние контролы


Название: Re: Перехват установки фокуса на диалог
Отправлено: Yegor от Май 13, 2013, 08:58
А есть ли более простой способ?


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