Qt 鍵盤事件(捕獲鍵盤按下、松開事件)


QT 之鍵盤事件(捕獲鍵盤按下、松開事件))
我們在做軟件時候,經常會碰到這樣的場景,比如按下F5進行刷新功能,按下F1進行幫助之類的快捷鍵方式。那么在QT中該怎樣做呢?

查閱文檔,QT已經實現了這一系列的鍵盤事件

1 void QWidget::keyPressEvent(QKeyEvent *event)   //鍵盤按下事件
2 void QWidget::keyReleaseEvent(QKeyEvent *event) //鍵盤松開事件

這樣兩個都基本上能夠滿足一般的需求了,但是前提是已經獲得焦點的控件已經獲取焦點。具體怎么使用呢?

在控件的頭文件.h中進行聲明:

1 protected: 2     virtual void keyPressEvent(QKeyEvent *ev); 3     virtual void keyReleaseEvent(QKeyEvent *ev);

在.cpp中進行實現相應的功能:

 1 void MainForm::keyPressEvent(QKeyEvent *ev)  2 {  3     if(ev->key() == Qt::Key_F5)  4  {  5        ui->stackedWidget->reloadPage();  6        return;  7  }  8  
 9  QWidget::keyPressEvent(ev); 10 } 11  
12 void MainForm::keyReleaseEvent(QKeyEvent *ev) 13 { 14     if(ev->key() == Qt::Key_F5) 15  { 16        ui->stackedWidget->reloadPage(); 17        return; 18  } 19  
20  QWidget::keyReleaseEvent(ev); 21 }

在一些程序中,我們發現這樣並不好使,怎么回事呢? 這時候可以試試在構造函數中添加這個函數,使其具有捕獲鍵盤事件的能力:

this->grabKeyboard();

 


免責聲明!

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



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