MainWindow::MainWindow() { textEdit = new QTextEdit; setCentralWidget(textEdit);
textEdit->installEventFilter(this); }
boolMainWindow::eventFilter(QObject *obj, QEvent *event){ if (obj == textEdit) { if (event->type() == QEvent::KeyPress) { QKeyEvent *keyEvent = static_cast<QKeyEvent *>(event); qDebug() << "Ate key press" << keyEvent->key(); returntrue; } else { returnfalse; } } else { // pass the event on to the parent class return QMainWindow::eventFilter(obj, event); } }
注册事件过滤器的参数是需要重写eventFilter的那个类的指针,未处理的事件传递给基类。
Notice in the example above that unhandled events are passed to the base class’s eventFilter() function, since the base class might have reimplemented eventFilter() for its own internal purposes.