Название: Отловить focusInEvent Отправлено: Alex_C от Июль 22, 2012, 18:18 Мне необходимо отловить получение окном фокуса в не зависимости от того, какие компоненты на нем есть, и на какой компонент я тыкнулся при активации окна. Допустим если у меня в окне есть QLineEdit, и при активации окна я на него ткнул мышкой, то событие focusInEvent для окна не срабатывает.
И заодно такой более общий вопрос - есть ли событие так сказать самого верхнего уровня для окна? Допустим я хочу обрабатывать нажатия кнопок до того, как они попадут в QLineEdit. В Дельфи для окна можно было задать св-во OnKeyPreview = true. Название: Re: Отловить focusInEvent Отправлено: Странник от Июль 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. Название: Re: Отловить focusInEvent Отправлено: Alex_C от Июль 22, 2012, 19:16 Я несколько не так выразился. Да, на счет installEventFilter - конечно знаю, но его нужно прописывать для каждого компонента. Конечно не проблема, но было интересно - а вот есть ли некое событие, которое отлавливаешь - и все? :)
|