Qt/C++中英输入法/嵌入式输入法/小数字面板/简繁切换/特殊字符/支持Qt456

这篇具有很好参考价值的文章主要介绍了Qt/C++中英输入法/嵌入式输入法/小数字面板/简繁切换/特殊字符/支持Qt456。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、前言

在嵌入式板子上由于没有系统层面的输入法支持,所以都绕不开一个问题,那就是在需要输入的UI软件中,必须提供一个输入法来进行输入,大概从Qt5.7开始官方提供了输入法的源码,作为插件的形式加入到Qt中,这里需要特别提示的是,该源码是gpl的,商业应用对这个比较不感冒,可能更愿意自己基于Qt来实现一个。用纯Qt写输入法,如果不涉及到中文输入,那还是非常简单的,只需要将按钮上的字符用键盘事件发给焦点的控件即可。如果需要中文输入,最简单的做法是通过查询字库数据库来获取当前拼音对应的汉字,然后模拟键盘事件发送给焦点控件,好处是代码简单思路简单,缺点是性能堪忧,字库体积大,查询效率低,需要全拼才能找到合适的词语。复杂点的做法就是用谷歌开源的输入法引擎,查阅Qt自己的输入法源码,也是用的那个引擎,new出类,然后调用里面的函数接口,会返回对应的汉字,性能非常好。

谷歌开源的输入法引擎是标准的C++写的,所以可以非常方便的支持Qt4到Qt6,就不会局限于只能Qt5.7以后,输入法面板自己编写自己控制,自由度高,同时还可以加入简体繁体切换,特殊字符面板切换。其实可以复用很多按钮,比如在特殊字符这块,特殊字符往往一个面板不够放,可能要至少3个面板才能涵盖大部分的特殊字符,所有专门放了个特殊字符的面板按钮集合,通过翻页切换特殊字符,将对应的特殊字符文本设置到对应的按钮上,按钮单击后,识别按钮上的文本,然后再模拟键盘事件发送给焦点的控件即可。根据此思路其实可以拓展成多国语言输入法,根据大致的观察,多国语言基本上就是一些类似特殊字符的文本,将那些文本作为数据插入到焦点控件即可。

二、功能特点

  1. 纯QWidget编写,原创输入法机制,没有任何第三方动态库的依赖。
  2. 支持各种Qt版本,包括Qt4、Qt5、Qt6及后续版本。
  3. 支持各种编译器,包括mingw、msvc、gcc、clang、wasm等。
  4. 支持各种目标平台,包括windows、linux、macos、android、嵌入式linux等。
  5. 支持任意控件输入,包括文本框、微调框、可编辑下拉框、表格行等,以及网页中的输入控件。
  6. 支持中文、英文、数字、繁体、特殊字符、字母大小写等输入,可以自由切换。
  7. 无需更改原有项目代码,不用任何额外代码,自动识别需要输入的控件,弹出输入法面板,不需要输入法代码写得到处都是。
  8. 使用极为方便,通过源码集成到对应项目,源码是一个pri组件,只要在项目的pro文件引入即可。
  9. 接口极其丰富,在众多输入应用场景中不断迭代完善至今。
  10. 界面清晰简洁,UI美观友好,高仿IOS输入法,非常适合触摸设备。
  11. 顶部单行文字面板和弹出多行多列文字面板选词,支持滑动选词。
  12. 具有词汇记忆功能,之前选中过的词语放到候选词最前面。
  13. 具有自由造词功能,可以直接打开词汇文件写入自定义词组,最高级别显示。
  14. 造词支持单个拼音多个汉字,自动调整优先级。
  15. 内置数字小键盘,在微调框这种只需要输入数字的地方,自动弹出数字小键盘,更美观。
  16. 可通过设置弱属性,控制是弹出全键盘的数字面板还是数字小键盘。
  17. 可设置回车后自动隐藏输入法面板还是要执行插入回车换行符。
  18. 可对部分不需要输入的输入框设置禁用输入法。
  19. 多版面字符页面,可以自行拓展各种字符展示,可用于多语言输入。
  20. 输入法面板尺寸自由设置,采用布局自适应任何分辨率,同时适用于一些小分辨率的设备。
  21. 输入法面板位置支持控件正下方/正上方、永远居中、底部拉伸填充等多种方式。
  22. 界面自适应屏幕大小,输入法弹出位置为控件底部时,当超过桌面右边或者底部时,自动调整位置。
  23. 支持Qt程序嵌入的浏览器中的网页中的文本框等控件的输入。
  24. 可以分别设置面板按键字体大小、候选词字体大小、图标尺寸、顶部高度等。
  25. 属性控制数字输入,例如需要文本框默认弹出的是数字面板,则设置代码 ui->lineEdit->setProperty(“flag”, “number”)。
  26. 属性控制大写输入,例如需要文本框默认输入字母永远大写,则设置代码 ui->lineEdit->setProperty(“upper”, true)。
  27. 自由控制需要显示输入法和不需要显示输入法,当某些控件不需要弹出输入法,只需要对应不需要弹出输入法的控件设置属性noinput为真即可。例如ui->lineEdit->setProperty(“noinput”, true)。
  28. 实现了长按超过500毫秒重复执行按下的键的功能。例如长按退格键,不断删除。
  29. 支持单拼、全拼、模糊拼音输入,智能分页算法,可任意翻页查看汉字词组。
  30. 默认自带5种皮肤颜色,可通过代码设置皮肤样式,用户也可用QSS自定义皮肤。
  31. 谷歌内核的输入法引擎,品质保证,字库文件1MB,不依赖数据库,资源占用低效率极高。支持模糊拼音,比如nh=你好。
  32. 可选windows专有版本,支持外部程序输入,比如输入到记事本、QQ聊天窗口等。
  33. 可选硬键盘同步输入版本,外接实体键盘,类似搜狗输入法弹出小的候选词面板,可以快捷键切换输入法状态。
  34. 整个输入法核心代码行数1000行左右,非常小,不会对程序体积造成负担。
  35. 代码结构极为清晰,注释详细,非常容易阅读和理解,可自行修改和拓展满足各种需求。

三、代码使用

  1. 将core_input2019和core_pinyin整个目录放到你的项目的pro同一级别目录中。
  2. 在你的主程序的pro文件中加一行 include($$PWD/core_input2019/core_input2019.pri)
  3. 在你的程序的main函数中引入头文件 #include “core_input2019/frminput2019.h”
  4. 在你的程序的main函数中加几行代码。
QApplication a(argc, argv);
frmInput2019::Instance()->hide();
frmInput2019::Instance()->setFontInfo("MicroSoft Yahei", 18, 16);
frmInput2019::Instance()->setFixedSize2(650, 310);
frmInput2019::Instance()->setIconSize(26, 26);
frmInput2019::Instance()->setTopHeight(60);
QWidget w;
w.show();
return a.exec();
  1. 将源码下的inputfile文件夹下所有文件(即字库文件)复制到可执行文件同一目录。
  2. 详细的输入法函数接口使用参见main.cpp和frminputtool.cpp以及frmInput2019.h头文件中的接口,都有详细注释说明。

四、效果图

Qt/C++中英输入法/嵌入式输入法/小数字面板/简繁切换/特殊字符/支持Qt456,Qt/C++项目作品,qt,c++,Qt输入法,Qt中文输入法,Qt嵌入式输入法
Qt/C++中英输入法/嵌入式输入法/小数字面板/简繁切换/特殊字符/支持Qt456,Qt/C++项目作品,qt,c++,Qt输入法,Qt中文输入法,Qt嵌入式输入法文章来源地址https://www.toymoban.com/news/detail-810138.html

五、体验地址

  1. 体验地址:https://pan.baidu.com/s/1ZxG-oyUKe286LPMPxOrO2A 提取码:o05q 文件名:bin_input.zip
  2. 国内站点:https://gitee.com/feiyangqingyun
  3. 国际站点:https://github.com/feiyangqingyun
  4. 个人主页:https://blog.csdn.net/feiyangqingyun
  5. 视频主页:https://space.bilibili.com/687803542/

到了这里,关于Qt/C++中英输入法/嵌入式输入法/小数字面板/简繁切换/特殊字符/支持Qt456的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Kylin 麒麟 Qt软件 QtCreator 中文输入法问题

    Kylin 麒麟 Qt软件 QtCreator 中文输入法问题 背景: QtCreator 和程序在麒麟系统下没法进行输入,或没法进行输入法的切换。 包括麒麟自带默认搜狗输入法的切换也不行。 使用下面的命令进行安装后,可以正常在QtCreator和程序中使用输入法。 QTCreator 输入中文 麒麟默认 搜狗输入

    2024年02月16日
    浏览(37)
  • Ubuntu下不能切换中文,qt creator无法输入中文,sogo输入法(详细步骤)

    目录: 1、解决ubuntu 不支持切换中文,并安装sogo输入法步骤; 2、解决Qt Creator不支持中文输入: 详细步骤: 一、解决ubuntu 不支持切换中文,并安装sogo输入法步骤: 1、如果在键盘输入法系统中,没有“fcitx”选项时,建议先打开终端手动安装 fcitx:sudo apt-get install fcitx 2、添

    2023年04月18日
    浏览(37)
  • QT学习笔记-QT5.15编译及安装谷歌拼音输入法(QtInputMethod_GooglePinyin)

    在使用QT进行嵌入式应用开发时,往往程序最终的运行设备是有触屏的设备。因此,不可避免的会遇到虚拟键盘和中文输入的问题。QT自带一个虚拟键盘,可以在构建套件/plugins/platforminputcontexts目录下看到2个文件: qtvirtualkeyboardplugin.dll qtvirtualkeyboardplugin.dll.debug QT自带的虚拟键

    2024年02月12日
    浏览(38)
  • ubuntu 22.04安装拼音输入法(qt各版本等全控件支持,非百度搜狗等)

    百度搜狗拼音输入法在ubuntu 22.04上时常出现一些窗口无法输入中文的情况,为此引入Fcitx5更佳! 在Ubuntu操作系统上,有几种可供选择的拼音输入法。以下是其中一些常用的拼音输入法: Fcitx:Fcitx 是一个开源的输入法框架,在Ubuntu上得到广泛应用。它支持多种输入法引擎,包

    2024年02月04日
    浏览(49)
  • 嵌入式学习笔记——PWM与输入捕获(下)

    上一篇介绍了通用定时器的输出比较部分,这一篇再来介绍一下输入捕获的相关内容。 输入捕获,见名知意,就用来对输入信号进行捕获的,说到捕获输入信号,之前介绍过一个叫做外部中断的片上外设,它的作用也是捕获输入;它们的不同在于,外部中断捕获的只是边沿,

    2024年02月06日
    浏览(32)
  • 嵌入式Qt 第一个Qt项目

    打开Qt Creator 界面选择 New Project或者选择菜单栏 【文件】-【新建文件或项目】菜单项   弹出New Project对话框,选择Qt Widgets Application 选择【Choose】按钮,弹出如下对话框 设置项目名称和路径,按照向导进行下一步   选择编译套件 向导会默认添加一个继承自QMainWindow的类,可

    2024年02月20日
    浏览(42)
  • 嵌入式QT- QT使用MQTT

    目录 一、MQTT介绍 二、MQTT概念   2.1 订阅(Subscribtion)   2.2 会话(Session)   2.3 主题名(Topic Name)    2.4 主题筛选器(Topic Filter)    2.5 消息订阅 三、MQTT中的角色 3.1 客户端 3.2 服务器 四、X86平台安装mosquitto 4.1 下载 mosquitto 服务器 4.2 下载 mosquitto 客户端 4.3 mosquitto 命令

    2024年02月13日
    浏览(44)
  • 嵌入式QT (Qt 信号与槽)

    因为有了信号与槽的编程机制,在 Qt 中处理界面各个组件的交互操作时变得更加直观和简单。 信号 (Signal)就是在特定情况下被发射的事件。 GUI 程序设计的主要内容就是对界面上各组件的信号的响应,只需要知道什么情况下发射哪些信号,合理地去响应和处理这些信号就

    2024年02月02日
    浏览(43)
  • 【嵌入式——QT】容器类

    Qt提供了基于模板的容器类,这些容器类可以用于存储指定类型的数据项,Qt的容器类比标准模板库(STL)中的容器类更轻巧、安全和易于使用。它们还是线程安全的,它们作为只读容器时可被多个线程访问。 容器类是基于模板的类,如常用的容器类QList,T是一个具体的类型,可

    2024年02月22日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包