SYSZUXpinyin中文输入法的移植(到QT)

一.首先是库libsyszuxpinyin.so的移植linux

1. 将 SYSZUXpinyin.tar.bz2 拷到/tmp/进行解压 而后 cd SYSZUXpinyin函数

2.修改syszuxpnyin.pro文件
TEMPLATE = lib
在.pro中添加
RESOURCES += syszuxpinyin.qrc(可能已经修改完毕)
3. qmake
4. make工具


注:若是在命令行用交叉编译工具编译不成的话(报错说找不到“main”,其实原本就没有main函数的),能够尝试用QT creator编译,在工具配置”Tools“里面”options“选择交叉编译工具,我没有找到报错的缘由,可是却用QT creator编译经过。ui


把生成的
libSYSZUXpinyin.so
libSYSZUXpinyin.so.1
libSYSZUXpinyin.so.1.0
libSYSZUXpinyin.so. 1.0.0

编码

拷贝到目标板(arm板)QTDIR的lib路径下面,个人是/lib 。spa


二.而后是把输入法编译到Qt中 
将源码包中的syszuxim.h和syszuxpinyin.h头文件和syszuxpinyin.ui面板放置到你Qt程序的源代码路径下,把syszuxpinyin.ui添加到QT creator工程的Forms里。
1. qmake -project生成.pro文件
将.pro文件中添加  LIBS += -L/(有libSYSZUXpinyin.so这些库的路径) -lsyszuxpinyin (第二个必定是小l,大L为在指定路径下寻找,小l为链接库)
在主界面源文件 .cpp中加入
#include "syszuxpinyin.h"
#include "syszuxim.h"
命令行

在要用的类的头文件里添加也行。code

并在须要启动输入法的函数里面加
orm

QWSInputMethod* im = new SyszuxIM;
QWSServer::setCurrentInputMethod(im);
源码

这样就安装好了输入法。


可是并无弹出软键盘。在以上两行下面能够写出弹出软键盘的指令:

im->updateHandler(QWSInputMethod::FocusIn);

(天然,要隐藏软键盘参数用FocusOut,这条指令会自动检测到有光标闪烁的编辑框而后弹出软键盘);


弹出了软键盘,可是中文字符为乱码,那么在工程文件的main函数里“MainWindow w”这一行下面添加以下一行:

    QTextCodec::setCodecForTr(QTextCodec::codecForName("GB2312")); 

能够显示中文,注意,只添加这一行,编码方式不对或者多添加了其他的两行都是不能正常显示的。


 主函数里设成GB2312后,除了按钮上的汉字能够正常显示外,其余的如标题等都不能正常显示了。由于咱们的linux下qt默认的中文环境是UTF-8格式,要正常显示中文必须转化成UTF-8格式。解决方法是:在头文件里#include <QTextCodec>,而后定义: QTextCodec *tc; 在对应的.cpp的构造函数里加上:tc =  QTextCodec::codecForName("UTF-8")就能够都显示中文了。


注意:因为syszuxpinyin将ui面板样式已经编进了libsyszuxpinyin.so里,因此改变ui的样式也只能在SYSZUXpinyin里进行而没法在当前工程的syszuxpinyin里,最后将改变后的ui再次编译成库,而后拷入目标板。


转自:http://hi.baidu.com/linfengmiyun/item/29e1f6798d347808d7a89ce4


上面所说将编码设置成GB2312后,界面上的中文不能显示了,这里我建议用Qtranslate来实现中文的转换,即便用Qt的国际化来实现