在软件主机面(继承自QWidgets),需要识别用户按下ESC键后,弹出退出登录对话框。自然想到要使用EventFilter重写进行按键监听,但尝试后发现无法实现,于是进一步使用keyPressEvent重写进行按键监听,经验证可行。
重写按键事件:
void MainWindow::keyPressEvent(QKeyEvent *event)
{
switch(event->key())
{
case Qt::Key_Escape:
this->close();
break;
default:
QWidget::keyPressEvent(event);
}
}
重写关闭事件:
void MainWindow::closeEvent(QCloseEvent *event)
{
frmLogout *logout=new frmLogout;
logout->exec();
event->ignore();
}