Qt软键盘使用和修改软键盘参数

  • 概述
  • 效果预览
  • 一.修改pro文件,添加软键盘模块
  • 二.修改main.cpp文件,加载软键盘
  • 三.代码没有写错但是软键盘显示不出来问题
  • 四. 修改软件盘的尺寸
    • 1.下载软键盘源代码
    • 2.修改尺寸
    • 3.编译出现找不到头文件
    • 4.使用
  • 五.广告 为自己带盐

概述

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();}
}

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
抖音 : 茶山日记


茶山美景:



Qt软键盘使用和修改软键盘参数 支持中文相关推荐

  1. Qt 软键盘的实现(QWidget),支持中文输入法、数字、英文切换

    **出发点:由于Qt自带的软键盘是QML的,如果使用QWidget模式去编写调用自带的软键盘的话,在ARM下运行会全屏漆黑,并不是我们想要的效果,所以,在网上搜了很多的资料,自己去做了自制键盘,在项目 ...

  2. 利用Karabiner和键盘修饰键修改MAC键盘,实现打字时双手不离开字母和数字区

    文章目录 第一步 第二步 第三步 其他 第一步 下载Karabiner软件并安装,在Simple modifications标签页中设置如下,且Mac系统设置中键盘修饰键设置如下. 第二步 代码转自h ...

  3. linux qt5.7以上软键盘,Qt5.7以上调用虚拟键盘(支持中文),以及源码修改(可拖动,水平缩放)...

    Qt 5.7及以上版本支持了虚拟键盘的支持,但是这个虚拟键盘太不好用,占据半个屏幕,而且不能放大缩小,不能拖动 首先,下载Qt虚拟键盘源码并解压,并切换到该目录下 然后配置支持中文: qmake CO ...

  4. Qt Quick QML实现自定义虚拟软键盘详解

    Qt Quick QML实现自定义虚拟软键盘详解 在Qt5.8版本推出的QML软键盘功能中,有两种实现方案.一种是基于中文汉字数据库,另一种是基于Google拼音输入引擎.然而,相比于官方软键盘,这两 ...

  5. 系统软键盘Android在外接物理键盘时,如何强制调用系统软键盘?

    第一次写,写的不好请见谅 物理键盘映射过程: 手机/system/usr/keylayout/*.kl :内核将keyCode映射成有含义的字符串 KeycodeLabels.h : framewor ...

  6. Android禁用软键盘和取消禁用软键盘

    最近参加了一个项目,主要需要适应带有物理键盘的小屏幕机型,因为屏幕小的原因,所以不能用软件盘,而需要使用物理键盘来进行输入操作. 找了很久,终于发现了相对适当的方法: 在BaseActivity里禁用 ...

  7. android 代码设置 键盘适应_Android自适应软键盘的Dialog以及监听软键盘弹起

    最近项目中遇到一个需求:新手引导.跟一般的新手引导没有什么太大区别,思路都是搞一个带阴影的遮罩层,然后在上边儿给一些提示性的文字,由于需求中有些特殊的地方,所以我用了一个全屏的dialog(而且,di ...

  8. android 键盘遮盖输入框_Android软键盘挡住输入框的终极解决方案

    前言 开发做得久了,总免不了会遇到各种坑. 而在Android开发的路上,『软键盘挡住了输入框』这个坑,可谓是一个旷日持久的巨坑--来来来,我们慢慢看. 入门篇 最基本的情况,如图所示:在页面底部有一 ...

  9. android 调出键盘表情_android 表情,软键盘冲突解决方案(仿微博等SNS应用)

    之前总想搞一下这个模块,可是由于忙碌总是推迟,现在就把这块好好的弥补过来,下面是我实现的思路.本人才疏学浅,还望大家不要见笑. 首先我们还是先看写示例: 上面应用应该不用我过多介绍,下面我简单介绍下我 ...

最新文章

  1. 【译】 WebSocket 协议第十一章——IANA 注意事项(IANA Considerations)
  2. python绘制笑脸-用python绘图
  3. 全方位讲解硬件防火墙的选择
  4. 大盘点|卷积神经网络必读的 100 篇经典论文,包含检测 / 识别 / 分类 / 分割多个领域
  5. java画图板代码_java学习小总结——画图板制做(附代码)
  6. python心得体会200字_50行代码让python自动生成文章
  7. python + pyqt5 UI和信号槽分离方法
  8. vscode 不能运行h5c3代码_让开发效率“飞起”的VS Code 插件
  9. olcd12864的u8g2库_U8G2 软件包单色1.3寸OLED屏驱动在 RT-Thread 移植问题
  10. 地铁关门提示音,可使用倒计时
  11. 体系建模系统软件:体系结构建模工具攻略
  12. 14万字面试题汇总整理,祝你顺利斩获大厂前端offer
  13. 型材机柜您了解多少?
  14. ie ajax十分卡,解决jquery .ajax 在IE下卡死问题的解决方法
  15. 国产软件的「硬替代」与「软着陆」之辨
  16. c语言程序24转换12时间,C语言将24小时制转换为12小时制的方法
  17. 那些年看过的电影之《绿皮书》
  18. RISC-V 架构指令集手册 第一册 无特权指令集 中文翻译
  19. 一个UDP用户数据报的首部的十六进制表示是06 32 00 45 00 1C E2 17。求源端口、目的端口、用户数据报总长度、数据部分长度。
  20. Centos 7 中 修改 Redis 的默认端口号

热门文章

  1. 灵活提取Excel数据工具
  2. linux ramdisk swap,ramdisk和initramfs比较
  3. 02前端学习之CSS3(1)
  4. 微信app支付和微信网页支付 java
  5. HTML之创建有序、无序和定义列表
  6. c语言编程数组例题,c语言编程有关数组的几道例题.docx
  7. codeforces 332b Maximum Absurdity dp
  8. 长安链源码学习--提案(Proposer)(五)
  9. 升级主板和CPU后OpenGL初始化失败问题的解决
  10. jquery给日期赋值_用js为Jquery datepicker日期控件赋值