一、前言

大概是从2012年就开始研究用Qt写输入法,因为项目需要,嵌入式板子上,没有对应的输入法,当初使用过很多NVR,里面也是鼠标按下弹出输入法面板进行输入,可以切换数字和字母及中文,于是借鉴着操作交互流程,用纯QWidget代码实现一个,当然最初的版本是非常简单和丑陋的,而且功能单一,能打字母数字和出来中文就行了,至于如何的友好如何的人性化,那不是第一步该考虑的问题,后面也是慢慢的随着用户数量的增多,不断用户实际需求的不同,慢慢持续迭代到今天的版本。比如要有自动记忆功能,上一次打过的词语,下一次自动排到最前面显示,再比如能够自定义词语,有些简拼缩写,自动出来自己定义的特殊词语,还有就是支持简繁切换。

二、效果图



三、体验地址

  1. 国内站点:https://gitee.com/feiyangqingyun
  2. 国际站点:https://github.com/feiyangqingyun
  3. 个人作品:https://blog.csdn.net/feiyangqingyun/article/details/97565652
  4. 体验地址:https://pan.baidu.com/s/1ZxG-oyUKe286LPMPxOrO2A 提取码:o05q 文件名:bin_input。

四、功能特点

  1. 纯QWidget编写,支持任何目标平台(亲测windows、linux、嵌入式linux等),支持任意Qt版本(亲测Qt4.6.0到Qt6.2),支持任意编译器(亲测mingw、gcc、msvc等),支持任意控件输入包括网页中的输入控件。
  2. 调用极为方便,pri文件调用形式,只要改成文件包含即可,例如pro文件中写 include($$PWD/input2019/input2019.pri)。
  3. 界面清晰简洁,UI美观友好,高仿IOS输入法,非常适合触摸设备。
  4. 顶部滑动选词+弹出汉字面板选词,支持滑动。
  5. 具有记忆功能,之前选中过的词语首先显示,支持单个拼音多个汉字,自动调整优先级。
  6. 具有造词功能,可以直接打开文件文件写入自定义词组,最高级别显示。
  7. 支持数字小键盘,可选是弹出全键盘的数字面板还是小键盘。
  8. 多版面字符页面,可以自行拓展各种字符展示,可用于多语言输入。
  9. 支持Qt程序嵌入的浏览器中的网页中的文本框等控件的输入。
  10. 界面大小随意设置,采用布局自使用任何分辨率。
  11. 属性控制数字输入,例如需要文本框默认弹出的是数字则设置代码 ui->txt->setProperty("flag", "number");
  12. 自由控制需要显示输入法和不需要显示输入法,当某些控件不需要弹出输入法,只需要对应不需要弹出输入法的控件设置属性noinput为真即可。例如ui->txt->setProperty("noinput", true);
  13. 界面自适应屏幕大小,输入法弹出位置为控件底部时,当超过桌面右边或者底部时,自动调整位置。
  14. 实现了长按超过500毫秒重复执行按下的键的功能。例如长按退格键,不断删除。
  15. 英文、中文、数字字母、大小写、特殊字符自由切换。
  16. 支持单拼、全拼、模糊拼音输入,智能分页算法,可任意翻页查看汉字词组。
  17. 默认自带5种皮肤颜色,可随意切换,用户也可用QSS自定义皮肤。
  18. 谷歌内核的输入法引擎,品质保证,字库文件1MB,不依赖数据库,资源占用低效率极高。支持模糊拼音,比如nh=你好。
  19. 可选windows专有版本,支持外部程序输入,比如输入到记事本、QQ聊天窗口等。
  20. 整个输入法代码行数1000行左右,非常小,不会对程序增加大小造成负担。
  21. 代码结构极为清晰,注释详细,非常容易阅读和理解,同时也可以自行修改拓展自定义的需求。

Qt/C++编写精美输入法(历时十年迭代/可换肤/支持Qt4/5/6/win/linux/mac/嵌入式等)的更多相关文章

  1. Qt编写安防视频监控系统11-动态换肤

    一.前言 Qt中的动态换肤技术是非常一流的,直接调用qApp->setStyleSheet(qss);就可以对整个应用程序进行换肤,如果样式表内容不多,或者对应的贴图不对,效率还是蛮好的,不过据 ...

  2. 基于QT的换肤整体解决方案(QSkinStyle)(提供Linux的XP风格)

    基于QT的换肤整体解决方案(QSkinStyle) 对QT这个成功的跨平台GUI库,本身内置了对换肤功能的实现,比如cleanlooks.plastique等跨平台风格:还有一些是和平台相关的风格,比 ...

  3. Qt编写可换肤的中文双拼汉字输入法

    时间过得真快,不知不觉已到2015年,农历春节一眨眼就过去了,端正状态收拾心情整装待发出发. 曾经有段时间,我有一个很执着的梦想,我要导演出一部空前绝后的巨幕.不过现实无情地碾碎我的梦想,也同时将我推 ...

  4. QT自定义精美换肤界面

    陆陆续续用QT开发过很多项目,也用QT写过不少私活项目,也写过N个工具,一直梦寐以求能像VC一样可以很方便的有个自定义的界面,QSS的强大让我看到了很好的希望,辗转百度谷歌无数次,一直搜索QT相关的换 ...

  5. 利用Eric+Qt Designer编写倒计时时钟

    [前言]前几日通过编写命令行通讯录,掌握了Python的基本语法结构,于是开始向更高水平冲击,利用Eric与Qt Designer 编写一个带界面的小程序.本次实操中也确实遇到了不少问题,通过学习也都 ...

  6. Android Studio 之 编写精美的聊天界面

    •准备工作 首先制作一张 .9 格式的聊天气泡,参见我的这篇博客: 需要注意的是,制作完成后,应该将原始文件删除,否则AS会分不清楚而报错. 新建一个 Empty Activity,Java 和 XM ...

  7. qt之窗口换肤

    1.相关文章 Qt 资源系统qt的moc,uic,rcc命令的使用 2.概要    毕业两年了,一直使用的是qt界面库来开发程序,使用过vs08.10.13等开发工具,并安装了qt的插件,最近在做客户 ...

  8. Qt之界面换肤

    简述 常用的软件基本都有换肤功能,例如:QQ.360.迅雷等.换肤其实很简单,并没有想象中那么难,利用前面分享过的QSS系列文章,沃我们完全可以实现各种样式的定制! 简述 实现原理 效果 新建QSS文 ...

  9. 解剖SQLSERVER 第十二篇 OrcaMDF 行压缩支持(译)

    解剖SQLSERVER 第十二篇   OrcaMDF 行压缩支持(译) http://improve.dk/orcamdf-row-compression-support/ 在这两个月的断断续续的开发 ...

  10. Atian inputmethod 输入法解决方案 方言与多语言多文字支持 英语汉字汉语阿拉伯文的支持 (au

    Atian inputmethod 输入法解决方案 方言与多语言多文字支持 英语汉字汉语阿拉伯文的支持 (au 1.1. Overview概论 支持母语优先的战略性产品,主要是针对不想以及不愿使用普通 ...

随机推荐

  1. DOMException: Failed to execute 'setRequestHeader' on 'XMLHttpRequest': 'function (header, parser) { header = normalizeHeader(header);

    场景:token过期,然后更新了token 重新发起请求获取数据 : 代码:使用上一次的错误请求配置报错     return request(error.config) : 解决 :  return ...

  2. 云原生周刊:一条 Kubernetes 命令引发的悲剧

    开源项目 KSail 用于在 Docker 中配置支持 GitOps 的 K8s 集群的 CLI 工具. nginx-gateway-fabric NGINX Gateway Fabric 是一个开源 ...

  3. C#线性查找算法

    前言 线性查找算法是一种简单的查找算法,用于在一个数组或列表中查找一个特定的元素.它从数组的第一个元素开始,逐个检查每个元素,直到找到所需的元素或搜索完整个数组.线性查找的时间复杂度为O(n),其中n ...

  4. vmware剪贴板共享不起作用的解决方法-银河麒麟V10服务器版

    安装了虚拟机自带的vmware tools,还是不行 试试这样: yum install open-vm-tools yum install open-vm-tools-desktop 或者: sud ...

  5. Jmeter并发线程场景下共享变量错乱问题解决

    问题复现 问题描述 使用IF控制器获取前一个请求的后置脚本中设置的全局变量->并发线程下通过vars.get获取变量时,第一个线程和第二个线程获取的变量值一样->导致不同基础数据的请求入参 ...

  6. 基于 Github 平台的 .NET 开源项目模板 - 项目及半自动脚本

    接上一篇模板的介绍文章, 我们接下来看看如何配置和使用这款模板. 项目配置 1. fork 咱这款模板. 2. 并将其设置为模板. 3. 在创建新仓库时使用这个模板. 4. 看使用说明,了解项目结构 ...

  7. 《Django 5 By Example》阅读笔记:p651-p678

    <Django 5 By Example>学习第9天,p651-p678总结,总计28页. 一.技术总结 1.aggregate() (1)aggregate:ad-("to&q ...

  8. CodeForces - 1353D Constructing the Array

    CodeForces - 1353D 这道题也可能比较简单,主要是要想到优先队列要怎么使用,这一点如果用递归会写不了 但是因为对优先队列不太熟悉,只有被提示可以用优先队列才想到要怎么用, 还是很重要的 ...

  9. 轻松使用线程: 不共享有时是最好的——利用 ThreadLocal 提高可伸缩性

    Brian Goetz (brian@quiotix.com), 软件顾问 简介: ThreadLocal 类是悄悄地出现在 Java 平台版本 1.2 中的.虽然支持线程局部变量早就是许多线程工具( ...

  10. Python3.6,3.7,3.8版本对比

    本文列举了Python3.6.3.7.3.8三个版本的新特性,学习它们有助于提高对Python的了解,跟上最新的潮流. 一.Python3.6新特性 1.新的格式化字符串方式 新的格式化字符串方式,即 ...