[轉]SYSZUXpinyin中文輸入法的移植(到QT)


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再次編譯成庫,然后拷入目標板。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM