Отображение события нажатия клавиши qt - PullRequest
2 голосов
/ 04 ноября 2011

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

1 Ответ

7 голосов
/ 04 ноября 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...