Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: alexman от Май 16, 2011, 19:08



Название: Переопределение void QMainWindow::keyPressEvent( QKeyEvent* keyEvent ).
Отправлено: alexman от Май 16, 2011, 19:08
Есть QMainWindow с кучей чайлдов. Пытаюсь переопределить void QMainWindow::keyPressEvent( QKeyEvent* keyEvent ), но не отрабатывает. Думаю это из-за чайлдов с фокусом ввода. Понятно, что можно установить фильтр для всех чайлдов, но что-то не хочется ;D Может есть более изящное решение?


Название: Re: Переопределение void QMainWindow::keyPressEvent( QKeyEvent* keyEvent ).
Отправлено: blood_shadow от Май 16, 2011, 20:07
Есть QMainWindow с кучей чайлдов. Пытаюсь переопределить void QMainWindow::keyPressEvent( QKeyEvent* keyEvent ), но не отрабатывает. Думаю это из-за чайлдов с фокусом ввода. Понятно, что можно установить фильтр для всех чайлдов, но что-то не хочется ;D Может есть более изящное решение?
фильтры мне кажется тут как раз и помогут,
а что если переопределить QMailWindow::event()?


Название: Re: Переопределение void QMainWindow::keyPressEvent( QKeyEvent* keyEvent ).
Отправлено: blood_shadow от Май 16, 2011, 20:09
есть еще грубее вариант с подклассом QApplication и перегрузкой QApplication::notify() 


Название: Re: Переопределение void QMainWindow::keyPressEvent( QKeyEvent* keyEvent ).
Отправлено: alexman от Май 16, 2011, 22:29
Есть QMainWindow с кучей чайлдов. Пытаюсь переопределить void QMainWindow::keyPressEvent( QKeyEvent* keyEvent ), но не отрабатывает. Думаю это из-за чайлдов с фокусом ввода. Понятно, что можно установить фильтр для всех чайлдов, но что-то не хочется ;D Может есть более изящное решение?
фильтры мне кажется тут как раз и помогут,
а что если переопределить QMailWindow::event()?
Не прокатывает(


Название: Re: Переопределение void QMainWindow::keyPressEvent( QKeyEvent* keyEvent ).
Отправлено: twp от Май 17, 2011, 13:25
а если установить фильтр событий в QApplication? Ведь события извлекаются из очереди сообщений именно в QApplication и потом уже распределяются по назначению.


Название: Re: Переопределение void QMainWindow::keyPressEvent( QKeyEvent* keyEvent ).
Отправлено: alexman от Май 17, 2011, 13:46
Все просто оказалось...QShortcut