QKeyEvent обрабатывает нелатинские макеты

Как обращаться с нелатинскими клавишами, нажатыми с помощью Qt?

Например, для нажатой клавиши «W» QKeyEvent :: key () возвращает 87, а для «Ц» — ту же клавишу в русской раскладке — 1062.

Поэтому я не могу использовать константы, такие как Qt :: Key_W, для проверки, какая клавиша была нажата: они не будут работать, если пользователь переключит раскладку.

Спасибо

2

Решение

Значение ключа зависит от выбранного в данный момент макета. То, что вы наблюдаете, правильно. Если вы нажмете эту клавишу в любом другом приложении, вы получите не W, а Ц (С).

Данный ключ означает Qt::Key_W только если это в макете, который производит римские W,

Если вы собираетесь ссылаться на физические ключи, вы можете попробовать использовать QKeyEvent::nativeScanCode() и / или QKeyEvent::nativeVirtualKey(), Эти значения, конечно, зависят от платформы.

2

Другие решения


По вопросам рекламы [email protected]