qt之esc鍵


   Esc鍵對大家來說實在熟悉不過的了,在Qt中Esc鍵也會默認的進行一些事件的觸發,今天對Esc鍵測試了一下,突然發現不像我想象的那樣,在QDialog中按下Esc鍵會默認調用reject()方法而不是closeEvent(QCloseEvent *event)或者其他事件。所以在這里如何管理和操作Esc鍵呢?

 

1、重新實現reject()方法

 

void LoginDialog::reject()

{

    //關閉窗口,不一定非得是close(),可以重新執行其他事件

    this->close();

}

 

2、重寫keyPressEvent(QKeyEvent *event)

 

void LoginDialog::keyPressEvent(QKeyEvent *event)
{
   switch(event->key())
   {
      //進行界面退出,重寫Esc鍵,否則重寫reject()方法
     case Qt::Key_Escape:
       this->close();
       break;

    default:
       QDialog::keyPressEvent(event);
   }
}

 

    以上者兩種方法都可以解決Esc鍵觸發的問題!當然這只是在QDialog中是這種情況,在QWidget中也可以通過keyPressEvent(QKeyEvent *event)來制定Esc鍵的功能,但是再重寫reject()就不行了,以為它默認執行的不是reject(),具體的可以測試一下!

http://blog.sina.com.cn/s/blog_a6fb6cc90101b1v3.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM