ARM技术william hill官网
直播中

倪love

12年用户 870经验值
私信 关注
[问答]

怎样去使用ARM Linux的Qt5软键盘及虚拟键盘呢

qt5软虚拟键盘使用
.pro文件修改
qt5要使用虚拟键盘只能使用qml布局,不然无法使用
工程文件.pro
增加
DEFINES += QT_QML
    QT += qml quick
    RESOURCES +=
        demo.qrc
    OTHER_FILES +=
        virkey.qml
demo.qrc中增加virkey.qml
qml布局文件
virkey.qml文件内容如下
import QtQuick 2.0
import QtQuick.Window 2.2
import QtQuick.VirtualKeyboard 2.1
Window {
    visible: true
    width: 1024
    height: 600
    Textinput {
        text: "11111111111"
        font.pointSize: 20
        anchors { left: parent.left; right: parent.right; margins: 12 }
    }
    TextEdit {
        anchors.centerIn: parent
        width: 500
        height: 200
        text: "+++test+++"
        focus: true
        color: "blue"
        font.pointSize: 20
        readOnly: false
    }
    InputPanel {
        id: inputPanel
        z: 99
        y: parent.height
        anchors.left: parent.left
        anchors.right: parent.right
        states: State {
            name: "visible"
            /*  The visibility of the InputPanel can be bound to the Qt.inputMethod.visible property,
                but then the handwriting input panel and the keyboard input panel can be visible
                at the same time. Here the visibility is bound to InputPanel.active property instead,
                which allows the handwriting panel to control the visibility when necessary.
            */
            when: inputPanel.active
            PropertyChanges {
                target: inputPanel
                y: parent.height - inputPanel.height
            }
        }
        transitions: Transition {
            from: ""
            to: "visible"
            reversible: true
            ParallelAnimation {
                NumberAnimation {
                    properties: "y"
                    duration: 250
                    easing.type: Easing.InOutQuad
                }
            }
        }
    }
}
其中
import QtQuick 2.0
import QtQuick.Window 2.2
import QtQuick.VirtualKeyboard 2.1
必需要有,然后InputPanel也必需要有,不然虚拟键盘不会弹出来
这只是其中一种方式,应该还有其它方法
main.cpp如下
#include "mainwindow.h"
#include
#include
#ifdef QT_QML
#include
//#include
//#include
//#include
#endif
int main(int argc, char *argv[])
{
#ifdef QT_QML
    qputenv("QT_IM_MODULE", QByteArray("qtvirtualkeyboard"));
    QApplication a(argc, argv);
    QQmlApplicationEngine eng;
    eng.load(QUrl(QStringLiteral("qrc:/virkey.qml")));
    if(eng.rootObjects().isEmpty()) {
        qDebug()<<"+++eng.rootObjects().isEmpty(+++";
        return -1;
    }
#else
    qputenv("QT_IM_MODULE", QByteArray("Qt5input"));
    QApplication a(argc, argv);
    MainWindow w;
    w.show();
#endif
    qDebug()<<"+++qt5hello+++";
    return a.exec();
}
效果如下

软键盘使用
生成库文件
由于qt5以上版本接口变换,qt4以前的软键盘无法使用,参考上面文章编译生成so文件
libQt5Inputplugin.so需要依赖googlepinyin.a文件,首先需要编译生成googlepinyin.a
然后放到工程Qt5Input目录下的pinyin目录下,参与静态编译即可
将编译生成的libQt5Inputplugin.so放到QT安装目录下的plugins/platforminputcontexts目录下
或者放到与应用程序同级目录的platforminputcontexts目录下
将Qt5Input目录中的dict和images目录放到目标板同一个目录中
然后声明环境变量QT5_INPUT_DIR
例如将dict和images目录放在/QTDIR/qt5inputdir的目录下,然后声明如下
export QT5_INPUT_DIR=/QTDIR/qt5inputdir
或者在main.cpp中进行设置
工程文件修改
将.pro文件中DEFINES += QT_QML注释掉,然后使用默认ui布局增加输入框
main.cpp不用修改
效果如下


原作者:红尘六欲

更多回帖

发帖
×
20
完善资料,
赚取积分