MileStone(part2)

(2009-04-05 20:16:51)

1、  下面是寫接口。在qpe中,採用inputmethodface,作爲plugins方式實現,現在在murphytalk代碼的Pinyinlmpl.cpp中。仿照其中的connect方法實現輸入法接口。例子代碼參考http://www.diybl.com/course/3_program/c++/cppjs/20090307/158903.html

       我的做法是直接用test.*換掉原來的PinyinImpl.*。注意修改test.cpp中的include

 

2、  編寫試驗程序。用一個簡單的LineEdit加上PinyinFrame的實例便可測試究竟輸入法可不可行。我寫了一個簡單的main.cpp如下:

#include <qapplication.h>

#include "PinyinImpl.h"

#include <qnamespace.h>

 

int main(int argc, char** argv)

{

        QApplication app(argc,argv);

        app.setFont(QFont("unifont"));

         Main *m=new Main;

         m->show();

         QObject::connect(&app,SIGNAL(lastWindowClosed()), &app,SLOT(quit()));

         return app.exec();

}

3、  重新生成pro文件。由於增加了main.cpp,需要重新組織程序,可以在原有pro文件中修改,也可以用qmake –project直接生成一個新的。我的做法是後者。不過要注意生成的pro文件中要去掉沒用的。比如scim中的main.cpp。這些代碼都是原來開發時候測試的,現在不需要,否則會出現多個main.cpp的錯誤。

4、  Qmake 生成Makefile

5、  Make all。不出意外,會發現錯誤:

PinyinFrame.h:110: 錯誤:有多餘的限定‘QPinyinFrame::’ 在成員 ‘get_char’

PinyinFrame.h:114: 錯誤:有多餘的限定‘QPinyinFrame::’ 在成員 ‘get_phrase’

make: *** [.obj/release-shared-mt-emb-x86/main.o] 錯誤 1

這個挺奇怪的,我直觀地去掉了QpinyinFrame後通過。出現新錯誤:PinyinFrame.cpp:198: 錯誤:redefinition of ‘void QPinyinFrame::resizeEvent(QResizeEvent*)’

PinyinFrame.cpp:184: 錯誤:‘virtual void QPinyinFrame::resizeEvent(QResizeEvent*)’ 已在此定義過

這個可能是因爲打補丁時候不小心寫了兩次,直接把其中重複的內容去掉一個。出現新錯誤:

PinyinFrame.cpp: In member function ‘virtual void QPinyinFrame::mouseReleaseEvent(QMouseEvent*)’:

PinyinFrame.cpp:735: 錯誤:‘Global’ 未聲明

PinyinFrame.cpp:736: 錯誤:‘Global’ 未聲明

make: *** [.obj/release-shared-mt-emb-x86/PinyinFrame.o] 錯誤 1

這個原因是使用了qpe的東西,我暫時不知道如何處理,直接註釋掉。鍵盤不能消失就是了。編譯通過。

12、現在在當前目錄MurphyPinyin目錄下生成了MurphyPinyin可執行文件。可以在qvfb下查看。不過你可能發現只能輸入英文不能輸入中文。最後一招:PinyinFrame.cppSendKey(int u int c)里加一句emit keyuc0truefalse);重新編譯,OK。(本想貼張圖出來,不了老師顯示不出來,罷了!)

     有可能還會出現按鍵自動重複等問題,請google關鍵字“Murphytalkqte移植”,相信可以找到答案

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章