QKeyEvent处理非拉丁布局

时间:2015-06-26 13:43:44

标签: c++ qt non-latin qkeyevent

处理用Qt按下的非拉丁键的方法是什么?

例如,对于'W'键,按下QKeyEvent :: key()返回87,但对于'Ö' - 俄语布局中的相同键 - 它返回1062.

所以我不能使用像Qt :: Key_W这样的常量来检查按下了哪个键:如果用户切换布局,它们将无法工作。

谢谢

1 个答案:

答案 0 :(得分:2)

键的含义取决于当前选择的布局。你观察到的是正确的。如果你在任何其他应用程序中按下该键,则不会得到W,而是Ц(C)。

只有在布局中生成罗马Qt::Key_W时,给定键才会显示W

如果您打算引用物理密钥,可以尝试使用QKeyEvent::nativeScanCode()和/或QKeyEvent::nativeVirtualKey()。当然,这些值取决于平台。