首页 > 其他分享 >Qt5.6使用Qt自带虚拟键盘

Qt5.6使用Qt自带虚拟键盘

时间:2023-01-19 14:46:55浏览次数:54  
标签:Qt qtvirtualkeyboard 键盘 编译 虚拟 rc Qt5.6 自带

Qt自带虚拟键盘是5.7版本以上才有,要在Qt5.6上使用自带虚拟键盘需要先下载源码,再进行编译安装。上网查了一些资料都很有用。

https://doc.qt.io/qt-5/qtvirtualkeyboard-index.html,Qt官网对虚拟键盘的说明

https://www.freesion.com/article/4329858138/,说明如何编译安装部署虚拟键盘

https://blog.csdn.net/can3981132/article/details/119547195,说明desktop模式下如何更改虚拟键盘大小

https://www.coder.work/article/7472902,说明如何解决虚拟键盘关闭不了,关闭时主界面卡死

现将我自己的操作步骤总结如下:

1、去GitHub上下载Qt5.6版本的虚拟键盘源码。网址为:https://github.com/hanshuaipeng/QtInputMethod_GooglePinyin.git,在下拉框上选择Download Zip即可下载。

2、解压源码压缩包,进入目录qtvirtualkeyboard-5.6中,

(1)Windows下可以直接通过QtCreator编译,也可以在开始菜单中找到Qt 5.6 for Desktop,在其中输入指令进行编译;

(2)Linux下直接输入指令进行编译。

3、执行qmake -r CONFIG+="lang-en_GB lang-zh_CN"生成Makefile。

4、(1)Windows下执行mingw32-make进行编译,执行mingw32-make install进行安装。

   (2)Linux下执行make进行编译,执行sudo make install进行安装,其中可能会报错,需要具体分析,我的安装时提示类似“usr/share/qt5/qtvirtualkeyboard/pinyin/dict_pinyin.dat: �: not found”这种错误,可以忽略。

5、在我们开发的程序中打开main.cpp,在QApplication之前加上qputenv("QT_IM_MODULE", QByteArray("qtvirtualkeyboard"));

6、Windows下可以直接运行程序,当点击输入框时会自动弹出虚拟键盘。但是Linux需要部署一下。

(1)找到自己编译的Qt生成文件目录,如果不知道这个路径可以在make install的输出打印信息中找到;

(2)找到.../usr/lib/qt5/plugins,将其中的文件夹imageformats、platforminputcontexts和platforms拷贝到应用程序可执行文件同级目录中的plugins下;

(3)找到.../usr/lib/qt5/qml,将其中的文件夹Qt、QtGraphicalEffects、QtQml、QtQuick和QtQuick.2拷贝到应用程序可执行文件同级目录中的qml下;

(4)将文件夹.../share/qt5/qtvirtualkeyboard拷贝到应用程序可执行文件同级目录下。

注:按照上面部署我并没有起作用,将上面步骤中的应用程序可执行文件同级目录改为应用程序运行环境中的Qt库对应目录即可。其中已经存在这些目录,需要先删除再把编译好的拷贝过来。

7、在Linux下运行我的应用程序出现了两个问题:

(1)键盘太大,把输入框都挡住了,此时如果使用desktop模式的虚拟键盘,可以在源码中找到virtualkeyboard/src/virtualkeyboard/源文件/desktopinputpanel.cpp,改写其中的show函数,将其改为如下内容:

AppInputPanel::show();
    Q_D(DesktopInputPanel);
    if (d->view) {
        QRect rc = QGuiApplication::primaryScreen()->geometry();
        rc.moveTo(rc.width() / 6, rc.height() / 2);
        rc.setWidth(rc.width() * 2 / 3);
        rc.setHeight(rc.height() / 2);
        repositionView(rc);
        //repositionView(QGuiApplication::primaryScreen()->availableGeometry());
        d->view->show();
}
即可改变虚拟键盘大小。
(2)点击关闭键盘按键,键盘不关闭,且主界面被卡死。解决方法是不用desktop模式,改为将InputPanel嵌入到控件中的模式,例如,在输入控件所在qml中首先加入
import QtQuick.Enterprise.VirtualKeyboard 2.0
注意:对于Qt5.6版本是2.0,即使QtCreator编辑器暂时提示找不到该模块也可以先忽略,只要编译通过就没问题,然后在TextField下面加入
InputPanel {
            width: window.width
            y: window.height - height
            visible: active
        }
即可,如果还不行,那么将TextField外层再包上Rectangle或者Item。

标签:Qt,qtvirtualkeyboard,键盘,编译,虚拟,rc,Qt5.6,自带
From: https://www.cnblogs.com/Gregg/p/17061377.html

相关文章

  • 基于QT实现的教学事务管理系统[2023-01-19]
    基于QT实现的教学事务管理系统[2023-01-19]题目五:教学事务管理系统该系统要求存贮如下信息:1.注册信息。每个学期的注册信息应包括每个已注册学生的班级代号,学号、姓名......
  • qt ui_xxx.h no file or directory
    今天是2023年1.19,22号就过年了,先祝大家新年快乐!首先经过这几天的研究,出现这个问题,提示其实已经很明显了,就是没找到文件,那么为什么没找到文件呢?基本上就是编译的时候没有找......
  • EMQX Cloud全托管的 MQTT 消息云服务
    从前,我向往远方,喜欢到处旅游......
  • qt 取得ipv4的值
    QHostInfohostinfo=QHostInfo::fromName(QHostInfo::localHostName());QList<QHostAddress>addressList=hostinfo.addresses();QStringip="0.0.0.0......
  • Qt项目-翻金币游戏
     项目概述项目预览项目框架项目代码项目总结-项目概述-Qt基础课程完结项目,完成一款小游戏并封装:翻金币游戏,通过点击金币进行翻面,让所有金币为同一面就游戏通过......
  • QT移植ARM开发板步骤
    一、新建编译平台更改../qt-everywhere-src-5.12.9/qtbase/mkspecs/linux-arm-gnueabi-g++/qmake.conf 目录下的文件1、添加:QT_QPA_DEFAULT_PLATFORM=linuxfbQMAKE......
  • LINUX-QT串口操作
    接收显示控件   添加串口模块  添加头文件  在头文件中声明一个函数  使用声明的函数  在mainwindow中进行调用InitUI  voidMainW......
  • Spring Boot整合MQTT 使用账号密码
     依赖,根据需要放入<dependency><groupId>org.eclipse.paho</groupId><artifactId>org.eclipse.paho.client.mqttv3</artifactId>......
  • qt学习
    用不到的话,看着很不爽,隐藏起来比较美观,解决办法ui->mainToolBar->setVisible(false);隐藏工具栏====================================         ......
  • QT qwt实时采集曲线图的两种方法
    qwt缺省的x轴为double,要换成时间有两种方法1、参考《QWT--自定义坐标轴刻度值》https://blog.csdn.net/Mr_robot_strange/article/details/114626601  (1) 自定义......