Qt левый код клавиши CTRL
в Qt QKeyEvent
Я могу проверить, является ли Ctrl нажал проверить, если ev->key()
is Qt::Key_Control
. Но как я могу отличить левое от правого?--4-->Ctrl ключи?
мне тоже нужно то же самое для Alt и Shift ключи.
4 ответов
нет способа сделать это с помощью pure Qt
методы, насколько я знаю.
в зависимости от вашей платформы, однако, вы можете различать ключи, используя QKeyEvent::nativeScanCode()
вместо QKeyEvent::key()
.
например, в Windows вы должны иметь возможность проверить, какой Ctrl клавиша была нажата следующим образом:
if (event->nativeScanCode() == VK_LCONTROL) {
// left control pressed
} else if (event->nativeScanCode() == VK_RCONTROL) {
// right control pressed
}
левая и правая клавиши являются частью кода виртуального ключа - > используйте nativeVirtualKey () для сравнения с перечислениями windows VK_* вместо nativescancode ().
по словам Ссылка На Пространство Имен Qt на enum Qt::Key
имеет другое значение для Qt::Key_Alt
и Qt::Key_AltGr
.
однако, enum Qt::KeyboardModifier
и enum Qt::Modifier
не вижу пару ключей, как различные модификаторы.
(примечание: Я бы опубликовал это как комментарий, но у меня недостаточно репутации. пока)
Если VK_RCONTROL не работает, проверьте значение nativescancode ctrl-right:
std:: cout int control_right = 285;
if (key - >nativeScanCode () = = control_right) {...