#include #include class MainWindow : public QMainWindow { public: MainWindow(); protected: void keyPressEvent(QKeyEvent *event) override; bool eventFilter(QObject *obj, QEvent *ev) override; private: QTextEdit *textEdit; }; MainWindow::MainWindow() { textEdit = new QTextEdit(this); setCentralWidget(textEdit); //textEdit->installEventFilter(this); installEventFilter(this); grabKeyboard(); } bool MainWindow::eventFilter(QObject *obj, QEvent *event) { if (event->type() == QEvent::KeyPress) { QKeyEvent *keyEvent = static_cast(event); qDebug() << "key press" << keyEvent->key(); return false; else if (event->type() == QEvent::KeyRelease) { QKeyEvent *keyEvent = static_cast(event); qDebug() << "key release" << keyEvent->key(); return false; } else { return false; } } void MainWindow::keyPressEvent(QKeyEvent *event) { qDebug("MainWindow keyPressEvent %d", event->key()); QMainWindow::keyPressEvent(event); }