使用qml代码控制qml虚拟键盘

问题描述 投票:0回答:2

我想使用输入面板在我的 QtQuickApplication 上安装虚拟键盘:

import QtQuick.VirtualKeyboard 2.1
    InputPanel {
        id: inputPanel
        anchors.fill: parent
        focus: true
    }

我的系统上没有鼠标(也没有触摸屏)。我只有一个小键盘(最多 10 个按钮)来控制我的 GUI。

我想使用 qml 代码从虚拟键盘中选择并键入按键。

有什么方法可以使用一些 qml 代码来控制虚拟键盘吗?

qt qml
2个回答
0
投票

感谢 folibis,我找到了解决方案。

Qt 虚拟键盘可以使用箭头键控制,但必须使用

CONFIG+=arrow-key-navigation
再次编译,如本主题所述:
如何使用箭头在 QtVirtualKeyboard 中导航

在此 Qt 文档中:
https://stackoverflow.com/questions/54719106/how-to-use-arrows-to-navigate-through-a-qtvirtualkeyboard

然后,正如 folibis 在之前的评论中所说,可以使用 QKeyEvent 对象来模拟箭头键事件:

QKeyEvent *event = new QKeyEvent ( QEvent::KeyPress, Qt::Key_Enter, Qt::NoModifier); QCoreApplication::postEvent (engine->rootObjects().first(), event);


0
投票

这就是我使用的(在 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中的任何文本字段。

© www.soinside.com 2019 - 2024. All rights reserved.