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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Отловить focusInEvent  (Прочитано 2992 раз)
Alex_C
Гость
« : Июль 22, 2012, 18:18 »

Мне необходимо отловить получение окном фокуса в не зависимости от того, какие компоненты на нем есть, и на какой компонент я тыкнулся при активации окна. Допустим если у меня в окне есть QLineEdit, и при активации окна я на него ткнул мышкой, то событие focusInEvent для окна не срабатывает.
И заодно такой более общий вопрос - есть ли событие так сказать самого верхнего уровня для окна? Допустим я хочу обрабатывать нажатия кнопок до того, как они попадут в QLineEdit. В Дельфи для окна можно было задать св-во OnKeyPreview = true.
Записан
Странник
Гость
« Ответ #1 : Июль 22, 2012, 18:46 »

с фокусом вопрос решается так:
Цитировать
void QWidget::setFocusProxy ( QWidget * w )
Sets the widget's focus proxy to widget w. If w is 0, the function resets this widget to have no focus proxy.
Some widgets can "have focus", but create a child widget, such as QLineEdit, to actually handle the focus. In this case, the widget can set the line edit to be its focus proxy.
setFocusProxy() sets the widget which will actually get focus when "this widget" gets it. If there is a focus proxy, setFocus() and hasFocus() operate on the focus proxy.

либо можете устанавливать фильтр событий в окне верхнего уровня для интересующих вас виджетов. это же справедливо для перехвата событий клавиатуры и проч. почитайте об eventFilter.
Записан
Alex_C
Гость
« Ответ #2 : Июль 22, 2012, 19:16 »

Я несколько не так выразился. Да, на счет installEventFilter - конечно знаю, но его нужно прописывать для каждого компонента. Конечно не проблема, но было интересно - а вот есть ли некое событие, которое отлавливаешь - и все? Улыбающийся
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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