zoukankan      html  css  js  c++  java
  • 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系统下开发的话,可以使用钩子实现。

  • 相关阅读:
    源代码的下载和编译
    搭建Android开发环境
    Git使用入门
    Android系统构架
    Android深度探索心得<9>
    Android深度探索心得<10>
    Android深度探索心得<8>
    android深度探索xinde < 7>
    android深度探索xinde < 5>
    android深度探索xinde < 6>
  • 原文地址:https://www.cnblogs.com/ybqjymy/p/14184140.html
Copyright © 2011-2022 走看看