Сопоставление события нажатия клавиши qt

#c #qt

#c #qt

Вопрос:

Как определить, какая клавиша была нажата пользователем?
Попытался выполнить поиск в Интернете, но не смог найти действительно ничего интересного.
Спасибо.

Комментарии:

1. Вы смотрели на keyPressEvent ?

Ответ №1:

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