Russian Qt Forum

Qt => Вопросы новичков => Тема начата: AfK24 от Апрель 12, 2016, 22:29



Название: Event не ловится, когда активно поле
Отправлено: AfK24 от Апрель 12, 2016, 22:29
Есть слот
void MainWindow::keyPressEvent(QKeyEvent *event)
Который реагирует на нажатия некоторых клавиш
Но при этом, когда активно поле ввода, функция не выполняется

Можно ли сделать event активным на всех виджетах программы?


Название: Re: Event не ловится, когда активно поле
Отправлено: Bepec от Апрель 12, 2016, 22:58
Вам нужно поставить фильтр событий на qApp.
Код:
void QObject::installEventFilter(QObject * filterObj)

Ваш код отлавливает события, которые относятся ТОЛЬКО к MainWindow. Фильтр же поможет отловить события всего приложения.


Название: Re: Event не ловится, когда активно поле
Отправлено: AfK24 от Апрель 13, 2016, 00:21
Кажется, добавил, но всё равно не работает

В конструктор MainWindow добавил
Код:
ui->input1->installEventFilter(this);
Где input1 - поле ввода

И добавил функцию
Код:
bool MainWindow::eventFilter(QObject *obj, QKeyEvent *event)
{
     MainWindow::test123(event);
   
}

Где test123 - функция обработки нажатия некоторых клавиш

                                      


Название: Re: Event не ловится, когда активно поле
Отправлено: Bepec от Апрель 13, 2016, 01:17
Я очень ясно и понятно написал куда и к кому надо добавить фильтр. Читайте внимательнее.