QT4編程指導(dǎo) 濟(jì)南_第1頁(yè)
QT4編程指導(dǎo) 濟(jì)南_第2頁(yè)
QT4編程指導(dǎo) 濟(jì)南_第3頁(yè)
QT4編程指導(dǎo) 濟(jì)南_第4頁(yè)
QT4編程指導(dǎo) 濟(jì)南_第5頁(yè)
已閱讀5頁(yè),還剩11頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、QT4編程實(shí)驗(yàn)指導(dǎo)硬件:博創(chuàng)經(jīng)典2410L、PC機(jī)Pentumn500以上, 硬盤80G以上。軟件:PC機(jī)操作系統(tǒng)RHEL4 xshell ARM-Linux開發(fā)環(huán)境 qt-embedded-linux-opensource-src-4.4.0.tar.bz2 tslib-1.4.tar.bz2、qt-x11-opensource-src-4.4.0.tar.gz /downloads一、 編譯QT-X11環(huán)境cd /home/sprifemkdir qt4cd qt4mkdir for_pcmkdir for_armcp /home/qt-x11-open

2、source-src-4.4.0.tar.gz /home/sprife/qt4/for_pccp /home/qt-embedded-linux-opensource-src-4.4.0.tar.bz2 /home/sprife/qt4/for_armcp /home/tslib-1.4.tar.bz2 /home/sprife/qt4/for_armcd /home/sprife/qt4/for_pctar xzvf qt-x11-opensource-src-4.4.0.tar.gzcd qt-x11-opensource-src-4.4.0./configure (./configur

3、e -prefix /usr/local/Trolltech/Qt-x11-4.4.0)(yes)gmakegmake install二、 編譯QT/E環(huán)境注:核心板使用PXA270可略去觸摸屏步驟使用USB鼠標(biāo)作為輸入1、編譯tslib1.4觸摸屏庫(kù)cd /home/sprife/qt4/for_armtar xjvf tslib-1.4.tar.bz2cd tslib-1.4vi build.sh#/bin/shexport CC=arm-linux-gcc./autogen.shecho ac_cv_func_malloc_0_nonnull=yes arm-linux.cache./c

4、onfigure -host=arm-linux -cache-file=arm-linux.cache -prefix=$PWD/./tslib1.4-installmakemake install編譯:./build.sh2、編譯QT/E庫(kù)cd /home/sprife/qt4/for_armtar xjvf qt-embedded-linux-opensource-src-4.4.0.tar.bz2cp -a tslib1.4-install/lib/* qt-embedded-linux-opensource-src-4.4.0/lib/ cp -a tslib1.4-install/

5、include/ts* qt-embedded-linux-opensource-src-4.4.0/include/cd qt-embedded-linux-opensource-src-4.4.0./configure -embedded arm -xplatform qws/linux-arm-g+ -depths 16 -little-endian -qt-mouse-linuxtp -qt-mouse-tslib -I/home/sprife/qt4/for_arm/tslib1.4-install/include L/home/sprife/qt4/for_arm/tslib1.4

6、-install/lib -prefix /mnt/nfs/Trolltech/qt-embedded-4.4.0makemake install-prefix 選項(xiàng)要特殊注意,該指定目錄必須要與實(shí)際NFS目錄對(duì)應(yīng)否則字體處會(huì)出現(xiàn)錯(cuò)誤3、測(cè)試觸摸屏及QT/E程序1、建立NFS共享目錄/arm2410clcd /mkdir arm2410clcd arm2410clmkdir Trolltechcd Trolltechmkdir qt-embedded-4.4.0cd qt-embedded-4.4.0cp /home/sprife/qt4/for_arm/qt-embedded-linux-o

7、pensource-src-4.4.0/lib/ ./ -arfcp /home/sprife/qt4/for_arm/tslib1.4-install/etc/ ./ -arf cp /home/sprife/qt4/for_arm/tslib1.4-install/bin/ ./ -arf2、ARM端掛載NFS共享目錄mount -o nolock,rsize=4096,wsize=4096 11:/arm2410cl /mnt/nfs3、設(shè)置環(huán)境變量cd /mnt/nfs/Trolltech/qt-embedded-4.4.0export QTDIR=$PWDexp

8、ort LD_LIBRARY_PATH=$PWD/libexport TSLIB_TSDEVICE=/dev/input/event0export TSLIB_PLUGINDIR=$PWD/lib/tsexport TSLIB_CONSOLEDEVICE=noneexport TSLIB_CONFFILE=$PWD/etc/ts.confexport POINTERCAL_FILE=$PWD/etc/ts-calib.confexport QWS_MOUSE_PROTO=tslib:/dev/input/event0export TSLIB_CALIBFILE=$PWD/etc/ts-cali

9、b.confexport LANG=zh_CN4、執(zhí)行觸摸屏校準(zhǔn)程序(在qt-embedded-4.4.0下)./bin/ts_calibrate如果出現(xiàn)如下錯(cuò)誤提示:Couldnt load module pthresNo raw modules loaded.ts_config: Success則更改ts.conf配置文件選擇一個(gè)輸入設(shè)備vi /mnt/nfs/Trolltech/qt-embedded-4.4.0/etc/ts.conf# Uncomment if you wish to use the linux input layer event interface# module_

10、raw input更改為# Uncomment if you wish to use the linux input layer event interfacemodule_raw input若提示:/dev/touchscreen/ucb1x00: No such file or directory則一般是環(huán)境變量沒設(shè)置好的問題,可以重新仔細(xì)檢查環(huán)境變量的設(shè)置再次執(zhí)行觸摸屏校準(zhǔn)程序即可,程序會(huì)自動(dòng)存儲(chǔ)坐標(biāo)校準(zhǔn)信息以便應(yīng)用程序使用。此時(shí)如無(wú)錯(cuò)誤則進(jìn)入5點(diǎn)觸摸屏校準(zhǔn)程序并存儲(chǔ)配置文件還可以進(jìn)行其他觸摸屏測(cè)試程序ts_test、ts_print等5、執(zhí)行QT/E帶觸摸屏的例子程序在宿主機(jī)端拷貝編譯

11、好的ARM端可執(zhí)行程序cp /home/sprife/qt4/for_arm/qt-embedded-linux-opensource-src-4.4.0/examples/widgets/digitalclock/digitalclock /arm2410cl/Trolltech/qt-embedded-4.4.0/ARM端執(zhí)行該程序./digitalclock qws如出現(xiàn)如下錯(cuò)誤:error while loading shared libraries: libz.so.1: cannot open shared object file: No such file or director

12、y則在宿主機(jī)端交叉編譯器目錄下搜索該庫(kù)文件,拷貝到lib目錄下(具體庫(kù)文件位置可能不盡相同)cp /opt/host/armv4l/armv4l-unknown-linux/lib/libz.so.1 /arm2410cl/Trolltech/qt-embedded-4.4.0/lib/若出現(xiàn)錯(cuò)誤error while loading shared libraries: libstdc+.so.6: cannot open shared object file: No such file or directory拷貝cp /home/bc/gcc-3.4.2-glibc-2.2.5/arm-l

13、inux/arm-linux/lib/libstdc+.so.6 /arm2410cl/Trolltech/qt-embedded-4.4.0/lib/若error while loading shared libraries: libgcc_s.so.1: cannot open shared object file: No such file or directory則cp /home/bc/gcc-3.4.2-glibc-2.2.5/arm-linux/arm-linux/lib/libgcc_s.so.1 /arm2410cl/Trolltech/qt-embedded-4.4.0/l

14、ib/如果想讓QT/E在ARM端支持USB鼠標(biāo),可以在ARM端配置環(huán)境變量2410核心板:export QWS_MOUSE_PROTO=MouseMan:/dev/input/mouse0270核心板:export QWS_MOUSE_PROTO=TPanel:/dev/touchpanel MouseMan:/dev/mice即可。三、 編寫QT-X11程序進(jìn)入QT for X11 目錄中進(jìn)行設(shè)計(jì)rootvm-dev # cd /home/sprife/qt4/for_pc/建立實(shí)驗(yàn)?zāi)夸況ootvm-dev for_pc# mkdir testqt-x11rootvm-dev for_pc#

15、 cd testqt-x11/rootvm-dev testqt-x11#使用designer編輯程序控件rootvm-dev testqt-x11# /home/sprife/qt4/for_pc/qt-x11-opensource-src-4.4.0/bin/designer將彈出designer界面選擇一個(gè)窗口布局Widget 點(diǎn)擊-創(chuàng)建拖拽幾個(gè)簡(jiǎn)單的控件(TextEdit、PushBotton、TextLabel)進(jìn)行界面設(shè)計(jì)初始化控件及相關(guān)屬性內(nèi)容建立信號(hào)與槽的連接show按鈕與文本編輯框的連接clicked-clear第二組信號(hào)與槽的連接exit按鈕與Form的連接clicked-

16、closed退出界面編輯保存為UI格式 testx11.uirootvm-dev testqt-x11# /home/sprife/qt4/for_pc/qt-x11-opensource-src-4.4.0/bin/designer rootvm-dev testqt-x11# lstestx11.uirootvm-dev testqt-x11#編輯main.cpp函數(shù)rootvm-dev testqt-x11# vi main.cpp #include ui_testx11.h int main(int argc, char *argv) QApplication app(argc, ar

17、gv); QWidget *widget = new QWidget; Ui:Form ui; ui.setupUi(widget); widget-show(); return app.exec(); rootvm-dev testqt-x11# lsmain.cpp testx11.uirootvm-dev testqt-x11#編譯程序生成工程文件.prorootvm-dev testqt-x11# /home/sprife/qt4/for_pc/qt-x11-opensource-src-4.4.0/bin/qmake -projectrootvm-dev testqt-x11# ls

18、 testx11.ui main.cpp編譯生成Makefile文件rootvm-dev testqt-x11# /home/sprife/qt4/for_pc/qt-x11-opensource-src-4.4.0/bin/qmake rootvm-dev testqt-x11# lsMakefile testx11.ui main.cpp編譯生成可執(zhí)行文件rootvm-dev testqt-x11# make/usr/local/Trolltech/Qt-x11-4.4.0/bin/uic testx11.ui -o ui_test

19、x11.hg+ -c -pipe -O2 -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/local/Trolltech/Qt-x11-4.4.0/mkspecs/linux-g+ -I. -I/usr/local/Trolltech/Qt-x11-4.4.0/include/QtCore -I/usr/local/Trolltech/Qt-x11-4.4.0/include/QtCore -I/usr/local/Trolltech/Qt-x11-4.4.0/include/Q

20、tGui -I/usr/local/Trolltech/Qt-x11-4.4.0/include/QtGui -I/usr/local/Trolltech/Qt-x11-4.4.0/include -I. -I. -I. -o main.o main.cppg+ -Wl,-rpath,/usr/local/Trolltech/Qt-x11-4.4.0/lib -o testqt-x11 main.o -L/usr/local/Trolltech/Qt-x11-4.4.0/lib -lQtGui -L/usr/local/Trolltech/Qt-x11-4.4.0/lib -L/usr/X11

21、R6/lib -lpng -lSM -lICE -pthread -pthread -lXi -lXrender -lXrandr -lfreetype -lfontconfig -lXext -lX11 -lQtCore -lz -lm -pthread -lgthread-2.0 -lglib-2.0 -lrt -ldl -lpthreadrootvm-dev testqt-x11# lsmain.cpp main.o Makefile testqt-x11 testx11.ui ui_testx11.hrootvm-dev testqt-x11#程序編譯成功

22、了執(zhí)行編譯好的程序測(cè)試下觀察效果rootvm-dev testqt-x11# ./testqt-x11QT編程擴(kuò)展編寫自定義的信號(hào)與槽將上個(gè)實(shí)驗(yàn)的目錄復(fù)制出另一份并改名為testmyqt-x11rootvm-dev for_pc# cd /home/sprife/qt4/for_pc/rootvm-dev for_pc# cp testqt-x11 testmyqt-x11 arfrootvm-dev for_pc# cd testmyqt-x11/rootvm-dev testmyqt-x11#編輯自己定義槽函數(shù)的頭文件myqt.h包含ui_testx11.h頭文件,繼承其控件類,定義自定義

23、函數(shù)文件處理函數(shù)MyDlg(),并添加自定義函數(shù)槽ShowInfo()即可。rootvm-dev testmyqt-x11# vi myqt.h#ifndef _DLG_H_#define _DLG_H_ #include #include class MyDlg : public QDialog Q_OBJECT public: MyDlg(); public slots: void ShowInfo(); private: Ui:Form ui;#endif 編輯myqt.cpp文件進(jìn)行函數(shù)功能實(shí)現(xiàn)其中ShowInfo()函數(shù)槽中定義改變textEdit的內(nèi)容為“Welcome to UP

24、-TECH”rootvm-dev testmyqt-x11# vi myqt.cpp#include myqt.h MyDlg:MyDlg() ui.setupUi(this); QObject:connect(ui.pushButton, SIGNAL(clicked(), this, SLOT(ShowInfo(); QObject:connect(ui.pushButton_2, SIGNAL(clicked(), this, SLOT(close(); void MyDlg:ShowInfo()ui.textEdit-setHtml(QApplication:translate(For

25、m, nnp, li white-space: pre-wrap; nnWelcome to UP-TECH, 0, QApplication:UnicodeUTF8);重新編輯main.cpp函數(shù)包含自定義頭文件并使用自定義的類對(duì)象進(jìn)行QT實(shí)現(xiàn)rootvm-dev testmyqt-x11# vi main.cpp#include #include myqt.h int main(int argc, char *argv) QApplication app(argc, argv); MyDlg *mydlg = new MyDlg; return mydlg-exec();查看當(dāng)前目錄文件r

26、ootvm-dev testmyqt-x11# lsmain.cpp myqt.cpp myqt.h testx11.uirootvm-dev testmyqt-x11#編譯程序:rootvm-dev testmyqt-x11# /home/sprife/qt4/for_pc/qt-x11-opensource-src-4.4.0/bin/qmake -projectrootvm-dev testmyqt-x11# /home/sprife/qt4/for_pc/qt-x11-opensource-src-4.4.0/bin/qmake rootvm-dev testmyqt-x11# mak

27、e/usr/local/Trolltech/Qt-x11-4.4.0/bin/uic testx11.ui -o ui_testx11.hg+ -c -pipe -O2 -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/local/Trolltech/Qt-x11-4.4.0/mkspecs/linux-g+ -I. -I/usr/local/Trolltech/Qt-x11-4.4.0/include/QtCore -I/usr/local/Trolltech/Qt-x11-4.

28、4.0/include/QtCore -I/usr/local/Trolltech/Qt-x11-4.4.0/include/QtGui -I/usr/local/Trolltech/Qt-x11-4.4.0/include/QtGui -I/usr/local/Trolltech/Qt-x11-4.4.0/include -I. -I. -I. -o main.o main.cppg+ -c -pipe -O2 -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/local/Tro

29、lltech/Qt-x11-4.4.0/mkspecs/linux-g+ -I. -I/usr/local/Trolltech/Qt-x11-4.4.0/include/QtCore -I/usr/local/Trolltech/Qt-x11-4.4.0/include/QtCore -I/usr/local/Trolltech/Qt-x11-4.4.0/include/QtGui -I/usr/local/Trolltech/Qt-x11-4.4.0/include/QtGui -I/usr/local/Trolltech/Qt-x11-4.4.0/include -I. -I. -I. -

30、o myqt.o myqt.cpp/usr/local/Trolltech/Qt-x11-4.4.0/bin/moc -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/local/Trolltech/Qt-x11-4.4.0/mkspecs/linux-g+ -I. -I/usr/local/Trolltech/Qt-x11-4.4.0/include/QtCore -I/usr/local/Trolltech/Qt-x11-4.4.0/include/QtCore -I/usr/local/Trolltech/Qt-x11

31、-4.4.0/include/QtGui -I/usr/local/Trolltech/Qt-x11-4.4.0/include/QtGui -I/usr/local/Trolltech/Qt-x11-4.4.0/include -I. -I. -I. myqt.h -o moc_myqt.cppg+ -c -pipe -O2 -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/local/Trolltech/Qt-x11-4.4.0/mkspecs/linux-g+ -I. -I/

32、usr/local/Trolltech/Qt-x11-4.4.0/include/QtCore -I/usr/local/Trolltech/Qt-x11-4.4.0/include/QtCore -I/usr/local/Trolltech/Qt-x11-4.4.0/include/QtGui -I/usr/local/Trolltech/Qt-x11-4.4.0/include/QtGui -I/usr/local/Trolltech/Qt-x11-4.4.0/include -I. -I. -I. -o moc_myqt.o moc_myqt.cppg+ -Wl,-rpath,/usr/

33、local/Trolltech/Qt-x11-4.4.0/lib -o testmyqt-x11 main.o myqt.o moc_myqt.o -L/usr/local/Trolltech/Qt-x11-4.4.0/lib -lQtGui -L/usr/local/Trolltech/Qt-x11-4.4.0/lib -L/usr/X11R6/lib -lpng -lSM -lICE -pthread -pthread -lXi -lXrender -lXrandr -lfreetype -lfontconfig -lXext -lX11 -lQtCore -lz -lm -pthread

34、 -lgthread-2.0 -lglib-2.0 -lrt -ldl -lpthreadrootvm-dev testmyqt-x11# lsmain.cpp main.o Makefile moc_myqt.cpp moc_myqt.o myqt.cpp myqt.h myqt.o testmyqt-x11 testx11.ui ui_testx11.hrootvm-dev testmyqt-x11#編譯成功執(zhí)行可執(zhí)行文件rootvm-dev testmyqt-x11# ./testmyqt-x11如圖:點(diǎn)擊自己重新定義的show按鈕,查看自己定義的功能。

35、四、 編寫Qt/E程序1、 將上節(jié)實(shí)驗(yàn)使用的QT程序代碼,無(wú)需更改,使用編譯Qt/E庫(kù)時(shí)候生成的相關(guān)工具qmake重新編譯程序,即可生成Qt/E的程序。進(jìn)入testmyqt-x11目錄,清除原有編譯中間過程文件rootvm-dev # cd testmyqt-x11rootvm-dev testmyqt-x11# lsmain.cpp Makefile moc_myqt.o myqt.h testmyqt-x11 testx11.uimain.o moc_myqt.cpp myqt.cpp myqt.o ui_testx11.hrootvm-dev testm

36、yqt-x11# make clean/home/sprife/qt4/for_pc/qt-x11-opensource-src-4.4.0/bin/qmake -unix -o Makefile rm -f moc_myqt.cpprm -f ui_testx11.hrm -f main.o myqt.o moc_myqt.orm -f * core *.corerootvm-dev testmyqt-x11#使用Qt/E工具重新編譯rootvm-dev testmyqt-x11# /home/sprife/qt4/for_arm/qt-embedded-linux-opensource-src-4.4.0/bin/qmake -projectrootvm-dev testmyqt-x11# /home/sprife/qt4/for_arm/qt-embedded-linux-opensource-src-4.4.0/bin/qmake rootvm-dev

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論