我想使用输入面板在我的 QtQuickApplication 上安装虚拟键盘:
import QtQuick.VirtualKeyboard 2.1
InputPanel {
id: inputPanel
anchors.fill: parent
focus: true
}
我的系统上没有鼠标(也没有触摸屏)。我只有一个小键盘(最多 10 个按钮)来控制我的 GUI。
我想使用 qml 代码从虚拟键盘中选择并键入按键。
有什么方法可以使用一些 qml 代码来控制虚拟键盘吗?
感谢 folibis,我找到了解决方案。
Qt 虚拟键盘可以使用箭头键控制,但必须使用
CONFIG+=arrow-key-navigation
再次编译,如本主题所述:然后,正如 folibis 在之前的评论中所说,可以使用 QKeyEvent 对象来模拟箭头键事件:
QKeyEvent *event = new QKeyEvent ( QEvent::KeyPress, Qt::Key_Enter, Qt::NoModifier); QCoreApplication::postEvent (engine->rootObjects().first(), event);
这就是我使用的(在 GPL3+ 许可证下):
import QtQuick
import QtQuick.VirtualKeyboard
Item {
InputPanel {
id: virtualKeyboard
y: parent.height
anchors.left: parent.left
anchors.right: parent.right
states: State {
name: "visible"
when: virtualKeyboard.active
PropertyChanges {
target: virtualKeyboard
y: parent.height - virtualKeyboard.height
}
}
transitions: Transition {
from: ""
to: "visible"
reversible: true
NumberAnimation {
properties: "y"
duration: 250
easing.type: Easing.InOutQuad
}
}
}
}
如果全局变量
QT_IM_MODULE="qtvirtualkeyboard"
,则虚拟键盘将自动出现,这意味着屏幕是触摸屏,并且选择了UI中的任何文本字段。