映射按键事件qt

sma*_*llB 2 c++ qt

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

sam*_*m-w 8

如果要全局检测按键(对于应用程序快捷方式等很有用),首先需要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;
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

...然后安装该对象作为eventFilter您的应用程序:

QObject *KeyPressEater = GetYourEventFilterObject();
QCoreApplication::instance()->installEventFilter(KeyPressEater);
Run Code Online (Sandbox Code Playgroud)

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