http://hi.baidu.com/linfengmiyun/item/29e1f6798d347808d7a89ce4
一.首先是庫libsyszuxpinyin.so的移植
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編譯通過。
把生成的 libSYSZUXpinyin.so libSYSZUXpinyin.so.1 libSYSZUXpinyin.so.1.0 libSYSZUXpinyin.so. 1.0.0
拷貝到目標板(arm板)QTDIR的lib路徑下面,我的是/usr/lib 。
二.然后是把輸入法編譯到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"
在要用的類的頭文件里添加也行。
並在需要啟動輸入法的函數里面加
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再次編譯成庫,然后拷入目標板。
