如何检测用户按下了哪个键? 试图搜索网络,但找不到任何有趣的东西 感谢。
答案 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
并且实际上有焦点才能获得按键。