完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
一、序章
基于Qt实现的虚拟键盘实现输入法在网上所有资料看来,大部分人都使用中文字库或数据库来实现输入法,而且制作的输入法要调用也只能在本工程窗口调用或者在新工程将输入法作为子目录接入,不够灵活也不够智能。 二、实现原理 我们采用的安卓底层的谷歌拼音输入法,在Qt5.7之后,Qt官方也出了一款输入法(支持中文拼音输入),但是是基于QML设计的,我们拿到其源码发现,其中的拼音输入法实现也是拿了安卓底层的谷歌拼音。 一定要记住:在有轮子的情况下,我们千万不要自己造轮子,除非迫不得已。我们把源码剥离出来,C++实现的,Qt官方稍微修改了几行代码,可以直接用在Qt上。我们单独把谷歌拼音输入法编译成静态库,到时候实现软键盘的时候直接链接进去。 //链接谷歌源码 / //(我工程的easyInput.pir) HEADERS += $$PWD/easyinput.h $$PWD/googlepinyin.h $$PWD/googlepinyin/atomdictbase.h $$PWD/googlepinyin/dictbuilder.h $$PWD/googlepinyin/dictdef.h $$PWD/googlepinyin/dictlist.h $$PWD/googlepinyin/dicttrie.h $$PWD/googlepinyin/lpicache.h $$PWD/googlepinyin/matrixsearch.h $$PWD/googlepinyin/mystdlib.h $$PWD/googlepinyin/ngram.h $$PWD/googlepinyin/pinyinime.h $$PWD/googlepinyin/searchutility.h $$PWD/googlepinyin/spellingtable.h $$PWD/googlepinyin/spellingtrie.h $$PWD/googlepinyin/splparser.h $$PWD/googlepinyin/sync.h $$PWD/googlepinyin/userdict.h $$PWD/googlepinyin/utf16char.h $$PWD/googlepinyin/utf16reader.h SOURCES += $$PWD/googlepinyin.cpp $$PWD/googlepinyin/dictbuilder.cpp $$PWD/googlepinyin/dictlist.cpp $$PWD/googlepinyin/dicttrie.cpp $$PWD/googlepinyin/lpicache.cpp $$PWD/googlepinyin/matrixsearch.cpp $$PWD/googlepinyin/mystdlib.cpp $$PWD/googlepinyin/ngram.cpp $$PWD/googlepinyin/pinyinime.cpp $$PWD/googlepinyin/searchutility.cpp $$PWD/googlepinyin/spellingtable.cpp $$PWD/googlepinyin/spellingtrie.cpp $$PWD/googlepinyin/splparser.cpp $$PWD/googlepinyin/sync.cpp $$PWD/googlepinyin/userdict.cpp $$PWD/googlepinyin/utf16char.cpp $$PWD/googlepinyin/utf16reader.cpp INCLUDEPATH += $$PWD INCLUDEPATH += $$PWD/googlepinyin QT实现界面基础功能及样式(qss) 对外提供的接口在谷歌源码的pinyinime.h文件里面。 需加载dict_pinyin.dat和dict_pinyin_user.dat两个文件。 //新创test工程链接DLL动态库 完成输入法功能后,接下来就是要将输入法做成插件生成DLL动态库,这样其他工程在调用输入法时,只需加载DLL动态库就可以将输入法调用。当然输入法自适应和嵌入当前窗口需要在输入法功能里就做好。 //这是我的工程目录 三、实现效果 四、总结 1、不要重复造轮子。 2、多看大佬的QTCN文章代码。 3、学习使用输入法插件的模板工程。 4、学习谷歌拼音输入法的使用。 七、末章 基于谷歌拼音源码QT嵌入式软键盘(多平台),以插件形式打包、通过加载DLL库调用,可多平台移植,注释清晰明了,源码工整,可供嵌入式开发新手参考学习。软键盘自适应当前嵌入窗口大小,自行检测当前窗口输入框焦点及点击来触发软键盘显示,可移植arm(本人已移植测试成功),有条件的可以自行研究加入手写、语音等功能。 |
|
|
|
只有小组成员才能发言,加入小组>>
698 浏览 0 评论
1109 浏览 1 评论
2476 浏览 5 评论
2810 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2653 浏览 6 评论
使用eim外接fpga可是端口一点反应都没有有没有大哥指点一下啊
655浏览 9评论
651浏览 7评论
请教大神怎样去解决iMX6Q在linux3.0.35内核上做AP失败的问题呢
783浏览 6评论
631浏览 5评论
671浏览 5评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-23 09:38 , Processed in 1.199101 second(s), Total 78, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号