处理用Qt按下的非拉丁键的方法是什么?
例如,对于'W'键,按下QKeyEvent :: key()返回87,但对于'Ö' - 俄语布局中的相同键 - 它返回1062.
所以我不能使用像Qt :: Key_W这样的常量来检查按下了哪个键:如果用户切换布局,它们将无法工作。
谢谢
答案 0 :(得分:2)
键的含义取决于当前选择的布局。你观察到的是正确的。如果你在任何其他应用程序中按下该键,则不会得到W,而是Ц(C)。
只有在布局中生成罗马Qt::Key_W
时,给定键才会显示W
。
如果您打算引用物理密钥,可以尝试使用QKeyEvent::nativeScanCode()
和/或QKeyEvent::nativeVirtualKey()
。当然,这些值取决于平台。