在Qt quick 中添加qt自带的虚拟键盘

时间:2024-05-21 09:39:00

操作系统:ubuntu17.10

Qt版本:Qt5.10


Qt5.7以后的开源版本中支持自带的虚拟键盘了,下面记录一下在自己的Qt Quick中加入该模块:

1. 在main()函数中添加 qputenv("QT_IM_MODULE", QByteArray("qtvirtualkeyboard"));

 int main(int argc, char *argv[])
{
    qputenv("QT_IM_MODULE", QByteArray("qtvirtualkeyboard"));
    QApplication a(argc, argv);
//    //qputenv("QT_IM_MODULE", QByteArray("qtvirtualkeyboard"));
    QQmlApplicationEngine engine1;
    engine1.load(QUrl(QStringLiteral("qrc:/qml/MainWindow.qml")));
    return a.exec();

}

需要说明的是,这一句代码不能放到QApplication a(argc, argv);之后,不然编译的时候会报错。

2. 在顶层的Qml文件中导入 :

       import QtQuick.VirtualKeyboard 2.3


3. 在根源素中加入:

InputPanel {
        id: inputPanel
        z: 99
        x: 0
        y: window.height

        width: window.width

        states: State {
            name: "visible"
            when: inputPanel.active
            PropertyChanges {
                target: inputPanel
                y: window.height - inputPanel.height
            }

        }

        transitions: Transition {
            from: ""
            to: "visible"
            reversible: true
            ParallelAnimation {
                NumberAnimation {
                    properties: "y"
                    duration: 250
                    easing.type: Easing.InOutQuad
                }
            }
        }

    }


完成以上步骤后,运行程序,当点击textEdit等编辑控件的时候,就会按照步骤3定义的动作弹出虚拟键盘

在Qt quick 中添加qt自带的虚拟键盘