我有一个奇怪的问题,只有多个键的特殊组合。这是一个简单的QML程序:
import QtQuick 2.4
import QtQuick.Window 2.2
Window {
title: qsTr("untitled")
width: 640
height: 480
visible: true
Item {
focus: true
Keys.onPressed: {
console.log(event.key);
}
}
}
当我按住以下键(按此顺序)“UP”+“LEFT”+“ESCAPE”时,显示:
qml: 16777235
qml: 16777234
qml: 16777216
qml: 16777216
qml: 16777216
...
这是正确的。但是当我按住“Z”+“D”+“ESCAPE”时:
qml: 90
qml: 68
qml: 68
qml: 68
qml: 68
...
这里,完全忽略了转义键......这不是忽略键的唯一情况。我真的需要处理用户按下的任何键。
Qt与C ++有完全相同的问题,不知道为什么?
答案 0 :(得分:0)
我认为这与Qt中向上和向下键的特殊处理有关。如果按住向上和向下键,您会看到Qt发出了onReleased事件,尽管它被进一步按下了。我找不到对此的解释。但是我查看了输入的驱动程序级别,那里的所有内容都是正确的。也许这是一项特殊功能,所以滚动列表更容易,尽管可以肯定自动重复也可以正常工作。
带有转义键的东西可能是接下来的问题,当已经按下两个键时,第三个键将不会出现。由于在第一个示例中释放了向上键(按下时释放了向上键),因此实际上只有两个键被同时按下。