我有一个奇怪的问题,只有多个键的特殊组合。这是一个简单的 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
...
在这里,转义键被完全忽略了……这不是唯一忽略键的情况。我确实需要处理用户按下的任何键。
我对使用 C++ 的 Qt 有完全相同的问题,知道为什么吗?
最佳答案
我认为这与Qt 中上下键的特殊处理有关。如果您按住向上和向下键,您将看到 Qt 正在发出一个 onReleased 事件,尽管它被进一步按下。我找不到对此的解释。但是我查看了输入的驱动程序级别,一切都是正确的。也许这是一项特殊功能,因此可以更轻松地滚动列表,尽管可以肯定的是,自动重复也应该适用。
转义键的问题可能是后续问题,当已经按下两个键时,第三个键不会出现。由于在第一个示例中释放了向上键(按下时释放了向上键),因此只有两个键同时按下才有效。
关于c++ - QML:多次按下/释放后某些键未处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44768564/