Если вы хотите обнаруживать нажатия клавиш глобально (полезно для ярлыков приложений и т. Д.), Вам нужно сделать один из ваших QObject
s 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
и на самом деле сфокусироваться, чтобы получить нажатия клавиш.