美文网首页Qt学习程序员C++
Qt5软键盘实现中文拼音输入法

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

作者: 0d339158f1a6 | 来源:发表于2017-10-31 21:06 被阅读267次

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

    一、序

    基于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
    完美收官

    相关文章

      网友评论

      • 0734a20cbbbf:你好作者,这个能用在linux系统上吗,我交叉编译出.so然后怎么运用,在pro文件里面包含这个库但是没反应

      本文标题:Qt5软键盘实现中文拼音输入法

      本文链接:https://www.haomeiwen.com/subject/gwdipxtx.html