#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
и на самом деле сосредоточиться, чтобы получить нажатия клавиш.