我有来自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”?
答案 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()将包含有效值。
然后您需要手动处理一些案例。