QML:多次按键/释放后,某些键无法处理

时间:2017-06-26 20:57:27

标签: c++ qt keyboard qml

我有一个奇怪的问题,只有多个键的特殊组合。这是一个简单的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 ++有完全相同的问题,不知道为什么?

1 个答案:

答案 0 :(得分:0)

我认为这与Qt中向上和向下键的特殊处理有关。如果按住向上和向下键,您会看到Qt发出了onReleased事件,尽管它被进一步按下了。我找不到对此的解释。但是我查看了输入的驱动程序级别,那里的所有内容都是正确的。也许这是一项特殊功能,所以滚动列表更容易,尽管可以肯定自动重复也可以正常工作。

带有转义键的东西可能是接下来的问题,当已经按下两个键时,第三个键将不会出现。由于在第一个示例中释放了向上键(按下时释放了向上键),因此实际上只有两个键被同时按下。