头文件中重写eventFilter;
目标对象上调用installEventFilter(),将监测对象注册到目标对象上
实现接收函数eventFilter如下,watched为对象,event->type()为触发的事件类型,筛选对应的按键即可,如下当按下回车键时执行on_btn_serSend_clicked()槽函数。
bool Lesson9::eventFilter(QObject* watched, QEvent* event) {
if(watched == ui.server_send) {
if(event->type() == QEvent::KeyPress) {
QKeyEvent* k = static_cast<QKeyEvent*>(event);
if(k->key() == Qt::Key_Return || k->key() == Qt::Key_Enter) {
on_btn_serSend_clicked();
return true;
}
}
}
if (watched == ui.client_send) {
if (event->type() == QEvent::KeyPress) {
QKeyEvent* k = static_cast<QKeyEvent*>(event);
if (k->key() == Qt::Key_Return || k->key() == Qt::Key_Enter) {
on_btn_clnSend_clicked();
return true;
}
}
}
return QMainWindow::eventFilter(watched, event);
}