映射键按事件qt

Mapping key press event qt

本文关键字:qt 事件 映射      更新时间:2023-10-16

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

如果你想要全局检测按键(对应用程序快捷方式等有用),你需要通过首先重载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键,并且要有焦点才能获得按键。