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