Qt编程QDialog的ESC键(按下Esc键会默认调用reject()方法)

        按了下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);  
   }  
}  

猜你喜欢

转载自blog.csdn.net/lengyuezuixue/article/details/81463297