c++ - QML:多次按下/释放后某些键未处理

标签 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
...

在这里,转义键被完全忽略了……这不是唯一忽略键的情况。我确实需要处理用户按下的任何键。

我对使用 C++ 的 Qt 有完全相同的问题,知道为什么吗?

最佳答案

我认为这与Qt 中上下键的特殊处理有关。如果您按住向上和向下键,您将看到 Qt 正在发出一个 onReleased 事件,尽管它被进一步按下。我找不到对此的解释。但是我查看了输入的驱动程序级别,一切都是正确的。也许这是一项特殊功能,因此可以更轻松地滚动列表,尽管可以肯定的是,自动重复也应该适用。

转义键的问题可能是后续问题,当已经按下两个键时,第三个键不会出现。由于在第一个示例中释放了向上键(按下时释放了向上键),因此只有两个键同时按下才有效。

关于c++ - QML:多次按下/释放后某些键未处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44768564/

相关文章:

c++ - 静态 const 成员变量的部分特化

c++ - QImage::Format_mono 到 .png 和 QGraphicsScene

c++ - 写入 I/O 端口 Controller 驱动程序(输入)(PS/2 键盘端口)左右键盘按键?

c++ - Qt list.clear() 会破坏对象的吗?

java - Android:单击按钮后隐藏键盘

ios - 添加一个按钮来隐藏键盘

c++ - native C++ : WSDL proxy generation library

c# - 像 Winspector Spy 一样拖放

c++ - 使用 OpenCV 输出作为网络摄像头

qt - QGraphicsScene 如何使用鼠标移动事件?