我目前在Windows上构建概念验证应用程序,测试我可以用QML做什么,但最终结果将在嵌入式Linux系统上运行(我需要学习它太)。我一直在处理键处理(Enter,Up,down,Left和Right等),并注意到有4个键标记为Context1到4。
在QtQuick文档中,引用了Keys.Context1..4以及相关的onPressed事件,但未提及它们的使用方式。
context1Pressed(KeyEvent事件)
按下Context1键时会发出此信号。 event参数提供有关事件的信息。
相应的处理程序是onContext1Pressed。
如何找出这些绑定的物理键,或者如何指定它们绑定的键?
答案 0 :(得分:0)
Qt / QML适用于桌面(Windows,Linux,Mac)和移动平台。我强烈怀疑contextX关键事件和处理程序是供移动平台使用的。我做了一些谷歌搜索,你可以see the intent on this Qtopia site。所以你不能在Windows上使用这些密钥。
答案 1 :(得分:0)
密钥枚举的密钥代码位于CoreLib/Global/QNamespace.h
; Key_Context1..4
键绑定到密钥代码0x01100000..3
。正如Tod所提到的那样,密钥是为移动平台设计的,类似的移动密钥是在上下文密钥附近定义的,例如:Key_Call
,Key_Camera
等。
Qt Embedded框架显然直接从tty设备读取密钥(在Linux上),因此不使用操作系统密钥映射,有一个补丁允许您指定绑定,如{ Qt::Key_A, Qt::Key_Context1, Qt::Key_Unknown, Qt::Key_Unknown }
这个页面:http://llg.cubic.org/patches/qtegerman.html我还不确定这是否有帮助。
我希望我能够使用操作系统内置的键映射功能,但如果它是直接从输入设备读取,我不确定这是否可行。
如果我再学习,我会更新这个。
我们正在运行的平台上有一个处理键盘设备的API,因此Qt无法直接访问它;我为每个按钮添加一个监听器,然后使用以下命令将按键事件发送到Qt:
QKeyEvent* key = QKeyEvent(QEvent::KeyPress, Qt::Key_Context1, Qt::NoModifier);
qApp->SendEvent(view, key).
其中view
是QML DeclarativeView(或等效的)。