Qt 獲取鍵盤按鍵(keyEvent獲取不到方向鍵及空格鍵)


需求:獲取方向鍵然后操作。

問題:qt 類使用void  keyPressEvent(QKeyEvent *event);判斷方向鍵時出現獲取不到按鍵事件

原因:在QT類獲取鍵盤焦點時才可以獲取事件。(在界面比較復雜時,焦點很可能不在當前QT類)

解決方法:

1.在類的構造函數中添加:

1 setFocusPolicy(Qt::StrongFocus); 2 //只能解決特別簡單界面,而且剛進入界面時需點擊一下界面

2.在eventFilter()事件篩選器中篩選出來:(當焦點被子控件如輸入文字等控件獲取的時候,是無法觸發eventFiter,但這就已經滿是我的功能需求了)

 1 //在qt類構造函數中加入
 2 setFocusPolicy(Qt::StrongFocus);  3 installEventFilter(this);  4  
 5  
 6  
 7 //在bool eventFilter(QObject* object, QEvent* event)加入
 8 if (event->type() == QEvent::KeyPress)  9 { 10     QKeyEvent *keyEvent = static_cast<QKeyEvent*>(event); 11     int i = 0; 12     if (keyEvent->key() == Qt::Key_Left || keyEvent->key() == Qt::Key_Up) 13  { 14  DoingSomething1(); 15  } 16     else if (keyEvent->key() == Qt::Key_Right || keyEvent->key() == Qt::Key_Down) 17  { 18  DoingSomething2(); 19  } 20 } 21 return false;

3.如果是在windows系統下開發的話,可以使用鈎子實現。


免責聲明!

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



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