ARM Linux Qt5.7.1软键盘及虚拟键盘使用

Posted 红尘六欲

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ARM Linux Qt5.7.1软键盘及虚拟键盘使用相关的知识,希望对你有一定的参考价值。

目录

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 <QApplication>
#include<QDebug>
#ifdef QT_QML
#include<QQmlApplicationEngine>
//#include <QQuickView>
//#include <QGuiApplication>
//#include <QQmlEngine>
#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();

效果如下

软键盘使用

参考文章https://blog.csdn.net/onlyshi/article/details/78408000.

生成库文件

由于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不用修改

效果如下

工程下载https://download.csdn.net/download/hclydao/10813105.
工程中有三个工程分别为:

googlepinyin、Qt5Input、qt5hello

======================================
作者:hclydao
http://blog.csdn.net/hclydao
版权没有,但是转载请保留此段声明
===========================================

以上是关于ARM Linux Qt5.7.1软键盘及虚拟键盘使用的主要内容,如果未能解决你的问题,请参考以下文章

安卓虚拟键盘怎么调出来

Android 3:模拟虚拟钢琴键盘的软键盘行为

手机怎么调出软键盘

手机软键盘怎么调出来

在树莓派上原生构建 qt5.7.1 得到错误:/usr/lib/arm-linux-gnueabihf/libQt5Quick.so.5: 未定义对 `QV8Engine::toVariant 的引用

苹果软键盘怎么设置