Qt5软键盘实现中文拼音输入法

article/2025/11/10 5:10:33

一、序

基于Qt实现的虚拟键盘实现输入法在网上所有资料看来,几乎都是基于生成的中文汉字数据库实现的方法,不够灵活,不够智能。

二、实现

1、拼音输入法的库

我们采用的安卓底层的谷歌拼音输入法,在Qt5.7之后,Qt官方也出了一款输入法(支持中文拼音输入),但是是基于QML设计的,我们拿到其源码发现,其中的拼音输入法实现也是拿了安卓底层的谷歌拼音。

一定要记住:在有轮子的情况下,我们千万不要自己造轮子,除非迫不得已。我们把源码剥离出来,C++实现的,Qt官方稍微修改了几行代码,可以直接用在Qt上。我们单独把谷歌拼音输入法编译成静态库,到时候实现软键盘的时候直接链接进去。

googlepinyin.pro 
QT       -= gui
TARGET = googlepinyin
TEMPLATE = lib
CONFIG += staticlib
SOURCES += \dictbuilder.cpp \dictlist.cpp \dicttrie.cpp \lpicache.cpp \matrixsearch.cpp \mystdlib.cpp \ngram.cpp \pinyinime.cpp \searchutility.cpp \spellingtable.cpp \spellingtrie.cpp \splparser.cpp \sync.cpp \userdict.cpp \utf16char.cpp \utf16reader.cpp
HEADERS += \atomdictbase.h \dictbuilder.h \dictdef.h \dictlist.h \dicttrie.h \lpicache.h \matrixsearch.h \mystdlib.h \ngram.h \pinyinime.h \searchutility.h \spellingtable.h \spellingtrie.h \splparser.h \sync.h \userdict.h \utf16char.h \utf16reader.h

工程源码在这里googlepinyin.7z,大家可以自行下载研究。对外提供的接口在pinyinime.h文件里面。

2、实现软件盘

先看一张实现的软件盘截图。
软件截图

软键盘插件实现框架网上资料很多,不做赘述。
我的源码工程目录如下:
源码工程目录

dict:存放最后要使用的二进制字典文件,此字典文件是谷歌拼音输入法根据最原始的汉字文件生成的,大家到时候直接使用就行了,不用深究此处。
font:存放图标字体,FontAwesome.otf。Font Awesome 是一款可缩放的矢量图标字库。相信很多人对这个感到陌生,请大家自行搜索FontAwesome,以及如何在Qt中运用FontAwesome。
images:按钮图片背景。
pinyin:刚才编译出来的谷歌拼音库和头文件。
googlepinyin.h,googlepinyin.cpp:谷歌拼音库的接口使用文件。
keyboardform.h,keyboardform.cpp:键盘布局文件。
keyeventdispacher.h,keyeventdispacher.cpp:键盘按键的事件处理文件。
inputcontext.,platforminputcontextplugin.,Qt5Input.json,virtualkeyborad_global.h:这几个文件不做赘述。
res.qrc:资源文件

工程文件中难点不多,不再对源码进行解释。

编译这个工程VritualKeyboard.7z,最后生成的是一个动态链接库,但是如何使用呢?

3、使用软键盘

  • 假设要使用输入法的程序是QtDemo.exe;
  • 在Qt5Demo.exe所在目录新建一个文件夹 platforminputcontexts (文件夹名称不可更改成其他),将 VirtualKeyboard.dll放入其中;
  • 将工程目录中 dict 整个文件夹复制到Qt5Demo.exe所在目录;
  • 最后运行QtDemo.exe 即可。
    测试目录

三、总结

1、不要重复造轮子。
2、在Qt的工程中使用Font Awesome图标字体。
3、学习使用输入法插件的模板工程。
4、学习谷歌拼音输入法的使用。

四、感谢

  1. 感谢QTCN上的各位大神
  2. 感谢全球最大的同性交友网站GitHub

完美收官


http://chatgpt.dhexx.cn/article/xppRRK1G.shtml

相关文章

实现ucGUI界面中的拼音汉字输入法(T9)

实现ucGUI界面中的汉字输入法 ucGUI版本:3.94 上个图片 代码下载地址: http://download.csdn.net/detail/jhting/7034669 很久了,可能直接编译不过,不过你了解的话,小小改动就OK了 码表是在网上找到的. 主要三个…

微信小程序实现调用百度文心一言接口API(可直接运行代码)

1、首先得获得你自己的API_key 先进入文心千帆大模型平台,然后点击左边一列的“应用接入”,然后点创建应用,这时你就获得了API_key了。 2、第二部就直接上这段代码就ok,不过记得要换成自己的API_key和Secret_key。 Page({onLoad:…

python客户端实现利用第三方smtp发邮件

上面采用的是qq邮箱,需要登录qq邮箱打开pop3 参考资料1(20条消息) Python使用SMTP协议实现邮件发送(含明文/SSL加密/TLS加密)_dev_zyx的博客-CSDN博客 参考资料2(20条消息) python实现smtp协议发送邮件_Clarence-CSDN博客

福音:IDEA、VSCODE神级插件Bito

文章目录 Bito是什么?IDEA环境安装注册使用 VSCODE环境疑难问题后叙 Bito是什么? Bito是一款在编程软件中使用的插件,由ChatGPT团队开发,它是ChatGPT团队为了提高开发效率而开发的一款工具。 Bito的AI帮助开发人员极大地提高了其…

一加3t android6.0,业界最良心!一加3/3T官方确认升级Android O

与苹果手机的iOS不同,搭载安卓系统的手机就比较悲催。因为升级速度总是慢半拍,甚至停滞不前。继HTC U11,另一款手机也确认将会升级Android O,它就是来自中国的一加手机3/3T。 今天,一加手机创始人兼CEO刘作虎在个人推特…

【Tanh的标量实现】

cmath 文章目录 计算机是如何实现tanh计算的一、tanh的一些基本内容二、代码1.我的实现例子2.代码中分段函数的实现原理 补充 计算机是如何实现tanh计算的 一、tanh的一些基本内容 对于tanh函数有公式为 t a n h ( x ) ( e x − e − x ) / ( e x e − x ) tanh(x) (e^{x}…

LeetCode-加一(Plus One解题思路)

题目: 给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。 最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。 你可以假设除了整数 0 之外,这个整数不会以零开头。 来源:力扣&#xff…

学计算机的 1加1,如何用“一加一等于几”解析人生

一加一等于二。 这个亘古不变的结论,一直以来被人们用各种各样的推理来诠释成千变万化的结果,一加一等于二,不再是唯一的结论,而每一个延伸的结果都伴随着一个个的充满睿智的推理。一加一到底等于几呢?好像我们越来越迷…

一加一为什么等于二

中国数学家陈景润研究的“11”并非算术的11,许多人也误以为陈景润在研究11为什么等于2,算法是人类定义的,不需要研究。陈景润研究的“11”其实是哥德巴赫猜想的代名词。 数学上,非常有名的“(11)”&#x…

1分钟自动产出高质量PPT:ChatGPT + MidShow

你可能想知道如何在一分钟内自动产出高质量的PPT。有了ChatGPT和MindShow,这不再是一个难题。ChatGPT是一个基于OpenAI的强大的自然语言生成模型,它可以根据你的输入生成各种类型的文本,包括PPT提纲。MindShow是一个在线的PPT制作工具&#x…

ChatGPT AI 快速制作财务汇报PPT

在职场中从事财务工作汇报一般都包含以下内容: 收入报表:收入来源、金额、时间等。支出报表:支出项目、金额、时间等。现金流量表:描述企业现金流量的变动情况,包括现金流入、流出和净流量。利润和损失报表&#xff1…

牛津英语字典pdf下载_英语词典 | 5本图解词典,让你拥有英语思维,一图胜千言!...

本篇微信主要包括如下内容: 1、DK汉英双语图解字典(PDF版) 2、新牛津图解词典The New Oxford Picture Dictionary(PDF版) 3、Word by Word Picture Dictionary(PDF+MP3音频版) 4、朗文汉英中华文化图解词典(PDF版) 5、APP(五种语言图解词典,JPG版) 小库需要提醒各位同学: ①资…

chatgpt赋能python:Python诞生于1991年–一个值得庆祝的编程语言!

Python诞生于1991年 – 一个值得庆祝的编程语言! Python作为一种非常流行的编程语言,已经成为许多技术公司和个人在各种领域的首选语言。 Python在最新的TIOBE编程语言排名中位列前三,这证明了其在编程世界的重要性。但是,Python…

中国天网系统有多牛叉?BBC 记者体验了一把

(点击上方公众号,可快速关注) 程序员的那些事(iProgrammer)整理 此前《南华早报》曾在 10 月份报道中国正在建造世界上最强大的面部识别系统,能在 3 秒内识别任何公民。系统的目标是以 90% 的精度匹配一个…

云服务器BBC销售渠道,云服务器bbc

云服务器bbc 内容精选 换一换 云耀云服务器与弹性云服务器的主要区别:云耀云服务器:云耀云服务器是可以快速搭建简单应用的新一代云服务器,云耀云服务器按已搭配的套餐售卖,适用于低负载应用场景,可以更加便捷、更加高…

GAN(生成对抗网络)有一本实战书出版了,了解下?

什么是GAN GAN是一类由两个同时训练的模型组成的机器学习技术:一个是生成器,训练其生成伪数据;另一个是鉴别器,训练其从真实数据中识别伪数据。 生成(generative)一词预示着模型的总目标——生成新数据。…

【BBC纪录片】无人驾驶汽车的黎明(观后总结)

【BBC纪录片】无人驾驶汽车的黎明(观后总结) 1 引言2 主要内容2.1 前景2.2 Level 1-52.3 影响 3 简评 基本信息 出处:BBC地平线纪录片 时间:2017年 英文名:Dawn of the Driverless Car 国内观看:网易公开课…

有什么软件可以测试你的英语,史上热门7款英语学习App测评,你还在盲目使用吗?...

如今英语学习App可谓是百花齐放,而我们的英语学习往往也需要这些软件的辅助。可是,英语软件那么多,到底哪款适合我?今天我就为大家带来史上热门的7款英语学习应用程序的测评,帮助你找到你的那一个真爱! 背单…

手把手教会你使用Markdown【从入门到精通一篇就够了】

手把手教会你使用Markdown【从入门到精通一篇就够了】 前言一、Markdown是什么二、Markdown优点三、Markdown的基本语法3.1 标题3.2 字体3.3 换行3.4 引用3.5 链接3.6 图片3.7 列表3.8 分割线3.9 删除线3.10 下划线3.11 代码块3.12 表格3.13 脚注3.14 特殊符号 四、Markdown的高…

BBC与开源硬件Micro:bit

这年头,做新闻的都开始做硬件了,并且风靡全世界~ 是的,你猜的没错,这里的BBC指的就是英国广播公司(British Broad-casting Corporation, BBC), 几乎所有人第一次知道这个信息都很震惊,就像当下朋友告诉你,…