最近使用QDialog时,按了下Esc键,导致QDialog被关闭,而后续的数据处理出现了问题。原来在QDialog中按下Esc键会默认调用reject()方法而不是closeEvent(QCloseEvent*event)或者其他事件。
处理的方法:
(注意:QDialog的close()函数也是会调用reject()函数和关闭函数,若在reject()中直接调用close()也会无法关闭,要先调用hide())
(1)重新实现reject()方法
void TestDialog::reject()
{
//关闭窗口,可以重新执行其他事件
this->hide(); //或者this->accept()
this->close();
}
2、重写keyPressEvent(QKeyEvent *event)
void TestDialog::keyPressEvent(QKeyEvent *event)
{
switch(event->key()) {
//进行界面退出,重写Esc键,否则重写reject()方法
case Qt::Key_Escape:
this->close();
break;
default:
QDialog::keyPressEvent(event);
}
}