如何将Qt :: Key转换为Keyboard键名?

时间:2015-03-27 10:22:30

标签: qt keyboard keyboard-events

我有来自keyPressEvent func的QtKeyEvent *事件。

我想从此活动中获取键盘键名称。 示例:我按“ALT + SHIFT + 1”,我想从event->修饰符获得两个修饰符,从event-> key()(或event-> nativeVirtualKey())获得“1”。

我没有ALT和SHIFT的问题,但我不能从事件中获取密钥名称(字符串)“1”。

我尝试使用QKeySequence(key).toString(),它适用于“1”,“2”...... 但当我试图按“F1”时,它看起来像“F1” - > “p”,“F2” - > “Q” ...

如果按“SHIFT + 1”,如果按“F1”,按键名=“F1”,如何获取QString keyname =“1”?

2 个答案:

答案 0 :(得分:0)

QKeySequence(event->key()).toString()打印出 F1 - F12 就好了。

Shift + number 被Qt识别为 $ 等等由于操作系统中的键盘布局设置。在不同的布局上,您将获得不同的键。我担心Qt没有API来读取较低级别的密钥。

查看WebOS如何针对不同的布局key mappings进行操作。

答案 1 :(得分:0)

来自Qt Doc

  

QString QKeyEvent :: text()const

     

返回此密钥生成的Unicode文本。文字返回   在修改键的情况下可以是空字符串,例如Shift,   正在按下或释放Control,Alt和Meta。在这种情况下   key()将包含有效值。

然后您需要手动处理一些案例。