• Qt软键盘使用和修改软键盘参数 支持中文


    概述

    Qt5.8以上的版本推出了QML的软键盘功能,本文介绍怎么使用软键盘以及修改软件盘的尺寸大小方法。以windows系统为例,linux系统的使用方法也是一样。需要qml支持,如果需要移植arm需要先确定是否能支持qml
    使用环境:windows10 Qt5.14.0

    效果预览

    在这里插入图片描述

    一.修改pro文件,添加软键盘模块

    在pro文件添加QT +=printsupport
    在这里插入图片描述

    二.修改main.cpp文件,加载软键盘

    在main文件添加qputenv(“QT_IM_MODULE”, QByteArray(“qtvirtualkeyboard”)); 加载软键盘

    注意事项:qputenv(“QT_IM_MODULE”, QByteArray(“qtvirtualkeyboard”)); 必须写在QApplication a(argc, argv); 前面
    在这里插入图片描述

    三.代码没有写错但是软键盘显示不出来问题

    原因分析:Qt没有设置环境环境变量,找不到对应的库路劲,通过windeployqt工具打包过去的库会不完整,使用无法显示。
    1.需要在生成的.exe添加几文件夹
    添加plugins文件夹,源文件在Qt安装目录的Qt\5.14.1\mingw73_64 下,具体路劲根据自己的安装位置,没有必要全部拷贝过去,在plugins下保留两个必要的platforminputcontexts和virtualkeyboard文件夹。
    2.将qml目录也拷贝过去
    3. 添加动态库:
    将一下几个动态库全部拷贝到exe目录
    Qt5Network.dll*
    Qt5Qml.dll*
    Qt5QmlModels.dll*
    Qt5QmlWorkerScript.dll*
    Qt5Quick.dll*
    Qt5QuickControls2.dll*
    Qt5QuickParticles.dll*
    Qt5QuickShapes.dll*
    Qt5QuickTemplates2.dll*
    Qt5QuickTest.dll*
    Qt5QuickWidgets.dll*
    Qt5VirtualKeyboard.dll*

    总共拷贝的:
    在这里插入图片描述
    如果还不行可以试试将Qt安装目录编译器版本对应的bin目录的动态库和文件夹全部拷贝到exe目录

    四. 修改软件盘的尺寸

    在一些应用场所默认的软键盘占用的屏幕太大,比如平板电脑,arm设备,所以需要修改尺寸

    1.下载软键盘源代码

    下载地址链接: https://download.qt.io/archive/qt/ ,根据自己的Qt版本下载,比如我的是Qt5.14,所以下载的是
    https://download.qt.io/archive/qt/5.14/5.14.0/submodules/下的qtvirtualkeyboard-everywhere-src-5.14.0.tar.xz文件
    下载完后解压用Qt打开工程进行编译
    使用Qt IDE 打开qtvirtualkeyboard-everywhere-src-5.14.0\qtvirtualkeyboard-everywhere-src-5.14.0\src\virtualkeyboard\virtualkeyboard.pro 工程

    2.修改尺寸

    将virtualkeyboard.pro工程下的desktopinputpanel.cpp文件的show函数修改,根据自己的实际情况修改
    我修改的如下:然后编译

    void DesktopInputPanel::show()
    {
        AppInputPanel::show();
        Q_D(DesktopInputPanel);
        if (d->view) {
            QRect WindowsSize=QGuiApplication::primaryScreen()->availableGeometry();
    
            WindowsSize.setX(WindowsSize.width()/2-WindowsSize.width()/4);
            WindowsSize.setY(WindowsSize.y()/2);
    
            WindowsSize.setWidth(WindowsSize.width()*0.75);
            WindowsSize.setHeight(WindowsSize.height()*0.75);
            qDebug()<<"DesktopInputPanel Size"<<WindowsSize;
            repositionView(WindowsSize);
            d->view->show();
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    3.编译出现找不到头文件

    在windows编译的时候会出现找不到好几个头文件,linux则不会,原因是在头文件中使用了相对路劲,在windows中编译器无法识别到路劲,使用需要将几个头文件覆盖掉
    报错位置头文件:
    \qtvirtualkeyboard-everywhere-src-5.14.0\qtvirtualkeyboard-everywhere-src-5.14.0\include\QtVirtualKeyboard\5.14.0\QtVirtualKeyboard\private
    解决方法:
    将\qtvirtualkeyboard-everywhere-src-5.14.0\qtvirtualkeyboard-everywhere-src-5.14.0\src\virtualkeyboard下的头文件全部拷贝到\qtvirtualkeyboard-everywhere-src-5.14.0\qtvirtualkeyboard-everywhere-src-5.14.0\include\QtVirtualKeyboard\5.14.0\QtVirtualKeyboard\private覆盖掉原来的头文件即可

    4.使用

    将重新编译出来的Qt5VirtualKeyboard.dll动态库拷贝到exe文件所在目录下替换掉原来的动态库文件即可
    没改前:
    在这里插入图片描述
    修改之后:
    在这里插入图片描述

    五.广告 为自己带盐

    博主回家发展茶叶,自己种茶做茶,需要茶叶和一些咨询简单(博主自己有能力解决的)技术问题朋友可以咨询博主。

    微信 : chashanrj
    抖音 : 茶山日记

    在这里插入图片描述
    茶山美景:
    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述在这里插入图片描述

    在这里插入图片描述

  • 相关阅读:
    c++中的异常处理
    servlet及其周期
    IP协议的相关特性
    [创业-40]:-优秀人与普通人的区别
    【03】基础知识:React组件
    从零开始手搓一个STM32与机智云的小项目——硬件介绍
    用 Three.js 创建一个酷炫且真实的地球
    Pytorch中的广播机制
    揭开volatile的神秘面纱——熟悉volatile 的内存语义
    vue中v-for循环数组使用方法中splice删除数组元素(每次都删掉点击的下面的一项)
  • 原文地址:https://blog.csdn.net/qq_41340733/article/details/125443595