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) {...