x86-qtopia應用程序編寫及到arm板的移植

x86-qtopia應用程序編寫:

平臺:友善之臂Mini2440 + 3.5“LCD

1.進入x86-qtopia,創建文件夾hello_test;
2.按照x86-qtopia/qtopia-2.2.0-FriendlyARM/setQpeEnv設置環境變量;
3.使用qtopia-2.2.0-FriendlyARM/tmake/bin/progen 創建一個名爲hello.pro的工程文件(其實這個文件也可以用gedit創建,反正剛開始是空的);
#./progen -t app -o hello.pro
將該hello.pro移動到hello_test文件夾下;
4.進入qtopia-2.2.0-FriendlyARM/qt2/bin/,打開QT Designer
#./designer
進入QT Designer開發環境。
選擇New一>Dialog
這時侯,您的QT Designer中就會出現一個Froml來.現在我們click一下上面的tools中的那個pushbutton
(標有OK的圖標)並且用mouse選擇到一定的大小.在這個pushbutton上面用您的mouse double click一下.
我們就可以改變pushbutton的label了.這裏我們把pushbutton 1這幾個宇,換成Exit,然梭直接按Enter
或者用mouse選擇OK也可以。現在我們看到,那個button中的標籤已將變成Exit了.
我們這時一侯還需要給這個Exit Button一個signal(信號),這樣當您在Exit這個Button上click的時侯.QT才知道如何去處理這個信號.
我們按一下F3 (Cconnect singnal slot)
然後,在那個Exit Button上面Click一下.
這時一侯我們就看到了Edit Connection的Dialog了.在Signal中選擇clicked,在slot中,先選擇toggle()就好了.這時侯選擇OK.我們就 算是完成了.如果想看看這個小程序長什麼樣子.
可以用CTRL+T來看Preview.
5.用File一>Save把這個文件存爲hello.ui放在x86-qtopia/hello_test的目錄下.
6.使用uic工具生成hello.h及hello.cpp;
#../qtopia-2.2.0-FriendlyARM/qt2/bin/uic -o hello.h hello.ui 
#../qtopia-2.2.0-FriendlyARM/qt2/bin/uic -o hello.cpp -impl hello.h hello.ui
7.分別在hello.h; hello.cpp裏面添加需要的代碼,本例子不用添加代碼
8.編寫主函數main.cpp內容如下:
#include 
#include "qwidget.h"
#include "hello.h"

int main(int argcchar **argv)
{
QApplication app(argcargv);

Form1 *hello=new Form1();
hello->show();
app.setMainWidget(hello);
return(app.exec());
}
9.編輯工程文件hello. pro文件:
/*************************************************************************
**以下是hello. pro文件的內容
*************************************************************************/
TEMPLATE = app
CONFIG = qt warn_on
HEADERS =hello.h
SOURCES =hello.cpp main.cpp
INTERFACES= 
【注意】:一定要將INTERFACES= hello.uic 修改爲:INTERFACES=
否則:報錯:重定義
10.生成Makefile文件:
(1)首先查看環境變量
#echo $TMAKEPATH 看看結尾是不是.../qws/linux-generic-g++字符串;
(2)修改tmake/lib/qws/linux-generic-g++/tmake.conf文件,將TMAKE_link = gcc 和TMAKE_link_SHLIB = gcc
分別修改成TMAKE_link = g++和TMAKE_link_SHLIB = g++
(3)生成Makefile文件
#tmake -o Makefile hello.pro
(4)修改Makefile文件:
LIBS = $(SUBLIBS) -L$(QTDIR)/lib -lqte 修改爲:
LIBS = $(SUBLIBS) -L$(QPEDIR)/lib -lqte -lm -lqtopia
11.編譯連接整個工程:
#make
生成可執行文件hello
12.將可執行文件拷貝到x86-qtopia/qtopia-2.2.0-FriendlyARM/qtopia/image/opt/Qtopia/bin目錄下;
13.運行./run_hello 就可以在幀緩衝器中看到你自己編輯的界面了,哈哈!

 


==============================================================================================
將應用程序發佈到開發板上
==============================================================================================
1.將在像x86模擬器中調試好的文件夾拷貝到arm-qtopia下;
2.刪除文件夾下的所有目標文件
#rm -rf *.o
3.按照arm-qtopia/qtopia-2.2.0-FriendlyARM/setQpeEnv設置環境變量;
4.修改tmake配置文件
#gedit ../qtopia-2.2.0-FriendlyARM/tmake/lib/qws/linux-arm-g++/tmake.conf
將其中“TMAKE_link= arm-linux-gcc”“TMAKE_link_SHLIB= arm-linux-gcc”
修改爲:“TMAKE_link= arm-linux-g++”“TMAKE_link_SHLIB= arm-linux-g++”
5. 使用tmake 工具來生成我們需要的makefile然後make
../qtopia-2.2.0-FriendlyARM/tmake/bin/tmake -o Makefile hello.pro
6.修改Makefile文件:
LIBS = $(SUBLIBS) -L$(QPEDIR)/lib -lm -lqte
7.make 生成可執行文件hello;
8.通過串口將hello下載到目標板;
9.修改hello目標文件權限;
10.在目標板上運行 ./hello -qws
就可以看見界面了,呵呵。


在QT編程中,一般會在subclass中實現slots,這樣修改界面時就不用重新修改代碼,只是生成相對應的界面代碼就可以了,用uic生成subclass的示例代碼如下:
uic -o myform.h myform.ui # generate header file
uic -o myform.cpp -impl myform.h myform.ui # generate implementation file
uic -o myformimpl.h -subdecl MyFormImpl myform.h myform.ui # generate subclass header file
uic -o myformimpl.cpp -subimpl MyFormImpl myformimpl.h myform.ui # generate subclass implementation file
edit myformimpl.h # edit subclass header file
edit myformimpl.cpp # edit subclass implementation file

 

moc -o moc_myform.cpp myform.h # generate moc code for base class
moc -o moc_myformimpl.cpp myformimpl.h # generate moc code for subclass
c++ -c myform.cpp -I$(QTDIR)/include # compile base class use similar command on Windows
c++ -c moc_myform.cpp -I$(QTDIR)/include # compile base class moc code use similar command on Windows
c++ -c myformimpl.cpp -I$(QTDIR)/include # compile subclass use similar command on Windows
c++ -c moc_myformimpl.cpp -I$(QTDIR)/include # compile subclass moc code use similar command on Windows
c++ -o myform myform.o moc_myform.o myformimpl.o moc_myformimpl.o -L$(QTDIR)/lib -lqt # link everything together use similar command on Windows

(9)運行應用程序hello
//在qt_x86/下面運行:
#qvfb&            
#./hello –qws //注:另一終端已運行qvfb
      (10)將hello文件拷貝到qt_x86/qtopia/bin目錄下面


   3.【製作圖標】

      製作一個16 X 16大小的PNG格式的圖標文件,將該文件存放在$QPEDIR/pics目錄下,命名爲:hello_wpb.png

   4. 製作桌面啓動器(.desktop)文件
        在$QPEDIR/apps/Applications目錄下,建立一個文本文件,在文件中添加以下的內容,
    這些內容指明瞭應用的名稱,圖標名等信息,然後將文件更名爲xxxx. desktop。例如對hello,
    (可以將一個已有的desktop文件複製一份,做一些修改即可)
    採用了以下啓動器文件(hello. desktop):
    [Desktop Entry]
    Comment=A Hello Program
    Exec=hello
    Icon=hello_wpb    //該項和3.3中所製作的圖標相對應
    Type=Application
    Name=hello

    5. 運行應用程序
#qvfb&
#qpe

http://hi.baidu.com/428501/blog/item/24a3dd7b3bee98f20bd18740.html

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