映射按键事件qt

时间:2011-11-04 13:11:28

标签: c++ qt

如何检测用户按下了哪个键? 试图搜索网络,但找不到任何有趣的东西 感谢。

1 个答案:

答案 0 :(得分:7)

如果您想全局检测按键(对于应用程序快捷方式等很有用),您需要先为应用程序创建一个QObject的eventFilter,首先重载QObject::eventFilter

bool cKeyPressEater::eventFilter(QObject *Object, QEvent *Event)
{
  if (Event->type() == QEvent::KeyPress)
  {
    QKeyEvent *KeyEvent = (QKeyEvent*)Event;

    switch(KeyEvent->key())
    {
      case Qt::Key_F1:
        //do something
        break;
      default:
        break;
    }
  }
}

...然后将该对象安装为应用程序的eventFilter

QObject *KeyPressEater = GetYourEventFilterObject();
QCoreApplication::instance()->installEventFilter(KeyPressEater);

否则,正如@Mat上面所述,只是重载QWidget::keyPressEvent。你需要setFocusPolicy并且实际上有焦点才能获得按键。