版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第13章Qt圖形應(yīng)用程序設(shè)計(jì)13.1圖形用戶界面系統(tǒng)(GUI)13.2Qt和Qt/Embedded簡(jiǎn)介13.3Qt/Embedded體系結(jié)構(gòu)13.4Qt編程入門13.5Qt和Qt/E開發(fā)環(huán)境的建立和移植本章小結(jié)
13.1圖形用戶界面系統(tǒng)(GUI)
圖形用戶界面系統(tǒng)(GUI)是系統(tǒng)級(jí)的底層軟件,它可以和文件系統(tǒng)、操作系統(tǒng)內(nèi)核等一起構(gòu)成一個(gè)完整的操作系統(tǒng)。GUI為用戶提供了與應(yīng)用系統(tǒng)交互的可視化通道,同時(shí)GUI為程序員提供了一種編程模式,即GUI負(fù)責(zé)系統(tǒng)的可視化界面的生成、管理以及系統(tǒng)與用戶之間的信息交互,而程序員只需專注于對(duì)實(shí)際應(yīng)用的分析。
13.2Qt和Qt/Embedded簡(jiǎn)介
Qt就是基于C++語(yǔ)言的一種專門用來開發(fā)GUI界面的程序,它里面包括了:button、label、frame…等很多的可以直接調(diào)用的東西。
1.?Qt是基于C++?的一種語(yǔ)言
Qt可以被稱作是一種C++?的延伸。Qt中有數(shù)百個(gè)類(class)都是用C++?寫出來的,這也就是說,Qt本身就具備了C++?的快速、簡(jiǎn)易、面向?qū)ο缶幊?Object-OrientedProgramming)等優(yōu)點(diǎn)。
2.?Qt具有非常好的可移植性
Qt不只是可以在Linux中運(yùn)作,也同樣可以運(yùn)行在MicrosoftWindows中。這也就意味著,利用Qt編寫出來的程序,在幾乎不用修改的情況下,就可以同時(shí)在Linux和MicrosoftWindows中運(yùn)行。Qt的應(yīng)用非常廣泛,從Linux到Windows,從x86到Embedded都有Qt的影子。
13.3Qt/Embedded體系結(jié)構(gòu)
13.3.1交叉開發(fā)平臺(tái)
Qt是用于本地化跨平臺(tái)應(yīng)用開發(fā)的領(lǐng)先性框架。Qt所有平臺(tái)的API是一致的。這就意味著在一種平臺(tái)上寫的應(yīng)用程序,在新的平臺(tái)上經(jīng)過重新編譯和連接便能運(yùn)行于該新平臺(tái)上。因此,軟件開發(fā)者通過開發(fā)和維護(hù)一種平臺(tái)的應(yīng)用源碼來用于多種平臺(tái)的開發(fā)。同樣,嵌入式Qt也可以移植基于Qt的軟件到嵌入式Linux中。Qt可提供的平臺(tái)如圖13-1所示。圖13-1Qt可提供的平臺(tái)13.3.2Qt/E的窗口系統(tǒng)
Qt/E的窗口系統(tǒng)采用一種客戶/服務(wù)器體系結(jié)構(gòu)。如圖13-2所示。一個(gè)典型的嵌入式Qt窗口系統(tǒng)一般包括一個(gè)服務(wù)器進(jìn)程、一個(gè)或多個(gè)客戶進(jìn)程(簡(jiǎn)稱服務(wù)器和客戶)。服務(wù)器負(fù)責(zé)為客戶和其本身分配顯示區(qū)域、生成鼠標(biāo)和鍵盤事件。客戶則通過與服務(wù)器通信來申請(qǐng)顯示區(qū)域、接收鼠標(biāo)和鍵盤事件??蛻艨梢灾苯釉L問所分配的顯示區(qū)域,以便為用戶提供GUI服務(wù)。服務(wù)器和客戶通過共享內(nèi)存的方式來傳遞所有分配顯示區(qū)域上的信息。圖13-2Qt/E的窗口系統(tǒng)的客戶/服務(wù)器體系結(jié)構(gòu)13.3.3Qt/E圖形引擎的實(shí)現(xiàn)
Qt/E的底層圖形引擎基于幀緩沖(framebuffer)。幀緩沖是標(biāo)準(zhǔn)顯示設(shè)備驅(qū)動(dòng)接口,使用MMAP系統(tǒng)將幀緩存映射到應(yīng)用程序虛擬內(nèi)存空間,這樣應(yīng)用程序可以訪問它。圖13-3信號(hào)與槽的連接
13.4Qt編程入門
13.4.1Qt編程實(shí)例
下面主要以Red
Hat
9.0中的Qt
Designer為例來講述Qt程序的設(shè)計(jì)過程。如果在安裝Red
Hat
9.0時(shí)沒有完全安裝,則Qt
Designer在默認(rèn)情況下是沒有被安裝的,用戶可以從主菜單→系統(tǒng)設(shè)置→添加/刪除應(yīng)用程序中選擇KDE軟件開發(fā),完成Qt
Designer的安裝(如圖13-4所示)。
圖13-4安裝QtDesigner圖13-5New/Open對(duì)話框圖13-6保存文件圖13-7QtDesigner主窗口圖13-8創(chuàng)建一個(gè)新的表單圖13-9更改表單的屬性圖13-10基本完成的GUI圖13-11加法程序界面效果圖圖13-12為Quit按鈕創(chuàng)建關(guān)聯(lián)圖13-13創(chuàng)建新的欄目圖13-14完成連接創(chuàng)建圖13-15創(chuàng)建Add()函數(shù)圖13-16創(chuàng)建Add()函數(shù)代碼圖13-17生成Makefile文件圖13-18測(cè)試程序結(jié)果13.4.2代碼解釋
下面寫一個(gè)簡(jiǎn)單的HelloWorld例子來解釋一下Qt應(yīng)用程序的運(yùn)行原理,讀者可對(duì)照上面的實(shí)例中所自動(dòng)生成的main.cpp(原代碼如圖13-19所示)來理解上面程序的運(yùn)行原理。圖13-19main.cpp代碼
13.5Qt和Qt/E開發(fā)環(huán)境的建立和移植
13.5.1Qt2和Qt2/E開發(fā)環(huán)境的建立
本開發(fā)環(huán)境所要的軟件如下:
tmake-1.13.tar.gz
qt-embedded-2.3.10-free.tar.gz
qt-x11-2.3.2.tar.gz
把這三個(gè)文件通過與Windows下文件共享將其拷貝到/home/mxl/dishisanzhang/train-2410-S-qte目錄中,如圖13-20所示。圖13-20拷貝源文件
1.?Qt開發(fā)環(huán)境的搭建
1)解壓安裝包并設(shè)置環(huán)境變量
2)編譯Qt2.3.2
圖13-21編譯Qt2.3.2成功后的界面
3)編譯Qvfb
圖13-22編譯Qvfb成功后的界面
2.?Qt2/E開發(fā)環(huán)境的搭建
1)編譯Qt2/Embedded
圖13-23編譯Qt2/Embedded成功后的界面
2)查看運(yùn)行結(jié)果
如果上面各步都能夠成功的編譯通過,下面就可以通過運(yùn)行Qt2/Embedded自帶的demo程序來查看運(yùn)行結(jié)果。圖13-24執(zhí)行demo程序圖13-25執(zhí)行l(wèi)auncher程序
3)交叉編譯Qt2/E
要將寫好的程序發(fā)布到開發(fā)板上,需要對(duì)Qt/Embedded重新編譯,與前面在宿主機(jī)上編譯類似,步驟如下:圖13-26交叉編譯Qt2/E結(jié)束后的界面圖13-27測(cè)試庫(kù)文件13.5.2Qt2/E程序在博創(chuàng)2410開發(fā)板上的移植
1.修改tmake配置文件
[root@localhostlib]#cdTMAKEDIR/lib/qws/linux-arm-g++
[root@localhostlinux-arm-g++]#vi$TMAKEDIR/
lib/qws/linux-arm-g++/tmake.conf
2.生成可執(zhí)行文件
[root@localhostlinux-arm-g++]#cd$QTEDIR/examples
/progressbar
[root@localhostprogressbar]#ls
[root@localhostprogressbar]#makeclean
[root@localhostprogressbar]#progen–tapp.t–o圖13-28查看progressbar可執(zhí)行程序
3.將相關(guān)的庫(kù)文件復(fù)制到根文件系統(tǒng)的lib目錄下
1)?QT2/E必要的庫(kù)文件
將?/$QTEDIR/lib/(即/home/mxl/dishisanzhang/train-2410-S-qte/qt-2.3.10-target/lib)目錄下面libqte.so、libqte.so.2、libqte.so.2.3、libqte.so.2.3.10四個(gè)文件復(fù)制到根文件系統(tǒng)lib目錄下,即
[root@localhostprogressbar]#
/home/mxl/dishisanzhang/train-2410-S-qte/qt-2.3.10-target/lib/libqte.so*
/home/mxl/dishisanzhang/root/built_rootfs/lib
2)交叉編譯器庫(kù)文件
需要復(fù)制編譯器(本章用的3.4.1版本)中/usr/local/arm/3.4.1
/arm-linux/lib中的某些庫(kù)文件到根文件系統(tǒng)的lib中,最簡(jiǎn)單的辦法是全部復(fù)制過去,即
[root@localhostprogressbar]#/usr/local/arm/3.4.1/arm-linux/lib/*
/home/mxl/dishisanzhang/root/built_rootfs/lib
3)?QT2/E字庫(kù)文件
Qt2/E字庫(kù)放在lib/fonts中,將Qt2/E字庫(kù)文件復(fù)制到根文件系統(tǒng)的lib中,即
[root@localhostprogressbar]#
/home/mxl/dishisanzhang/train-2410-S-qte/qt-2.3.10-target/lib/fonts/*
/home/mxl/dishisanzhang/root/built_rootfs/lib
4.重新制作可寫根文件系統(tǒng)
1)把tmp目錄制作為ramfs文件系統(tǒng)
(1)編譯BusyBox。配置BusyBox及編譯方法和第9章內(nèi)容一樣。
(2)創(chuàng)建linuxrc文件。linuxrc文件放在根目錄下,linuxrc文件內(nèi)容:
#!/bin/sh
echo“mount/tmpasramfs”
/bin/mount-tramfsramfs/tmp
exec/sbin/init
(3)創(chuàng)建inittab文件。inittab文件是init的初始化配置文件,是系統(tǒng)啟動(dòng)后第一個(gè)訪問的腳本文件,后續(xù)的啟動(dòng)文件是由它指定的。
inittab文件放在根目錄etc目錄下,inittab文件內(nèi)容:
::askfirst:-/bin/sh
::sysinit:/etc/init.d/rcS
(4)創(chuàng)建/etc/init.d文件夾和rcS文件。/etc/init.d/rcS是BusyBox中系統(tǒng)啟動(dòng)時(shí)默認(rèn)的配置腳本。需要啟動(dòng)的進(jìn)程和需要進(jìn)行的設(shè)置可以放到這個(gè)文件里面,并在其中加入必要的初始化工作。
在rcS中添加:
#!/bin/sh
echo“StartingSystem”
hostnameuptech-s3c2410
/bin/mount-a
/bin/mount-tprocproc/proc
/sbin/ifconfigeth0
(5)創(chuàng)建fstab文件。fstab文件是mount文件系統(tǒng)的配置文件。它指定了系統(tǒng)掛載塊設(shè)備和目錄的關(guān)系,需要和實(shí)際的系統(tǒng)相配合。inittab文件放在根目錄etc目錄下,fstab文件內(nèi)容:
none/tmpramfsdefaults00
(6)創(chuàng)建profile文件。這個(gè)文件主要是為系統(tǒng)添加環(huán)境變量。
inittab文件放在根目錄etc目錄下,profile文件內(nèi)容:
(7)?cramfs文件系統(tǒng)映像的制作。cramfs文件系統(tǒng)映像的制作和第9章內(nèi)容一樣。
(8)下載cramfs根文件系統(tǒng)映像到開發(fā)板。下載cramfs根文件系統(tǒng)映像到開發(fā)板和第9章內(nèi)容一樣。
這里要注意的是,因?yàn)镼t的庫(kù)較大,所以根文件系統(tǒng)占用Flash的空間較大,第7章對(duì)Flash的分區(qū)將不合適,要重新分區(qū),將存放根文件系統(tǒng)的區(qū)間分為24MB大小。分區(qū)命令如下:
vivi>bonpart0128k192k2240k26816k:m65536k回車圖13-29重新分區(qū)后的Flash分區(qū)信息圖13-30新制作的cramfs根文件系統(tǒng)啟動(dòng)結(jié)果
(9)測(cè)試新制作的cramfs根文件系統(tǒng)。為了測(cè)試tmp目錄是不是ramfs文件系統(tǒng),可進(jìn)入?/tmp目錄,創(chuàng)建新的目錄是否成功,若能創(chuàng)建,且系統(tǒng)重啟后?/tmp目錄新創(chuàng)建的目錄將不存在,則可證明tmp目錄是ramfs文件系統(tǒng)。具體過程如下:
/#cdtmp
/tmp#mkdirmxl
/tmp#ls圖13-31/tmp是否是ramfs文件系統(tǒng)
2)制作yaffs2根文件系統(tǒng)
因?yàn)?.6.14內(nèi)核配置菜單里沒有yaffs2文件系統(tǒng)選項(xiàng),如果要讓內(nèi)核支持yaffs2文件系統(tǒng)功能,則需要添加如下三方面的內(nèi)容:
(1)?MTD分區(qū)的支持。
(2)給linux-2.6.14內(nèi)核打補(bǔ)丁(添加YAFFS2選項(xiàng))。下載yaffs2.tar.gz源碼包,解壓源碼,并進(jìn)入目錄執(zhí)行:
#./patch-ker.sh/linux-/
(3)添加devfs。
5.測(cè)試Qt2/E程序(采用tmp目錄制作為ramfs文件系統(tǒng)的方法)
當(dāng)系統(tǒng)啟動(dòng)進(jìn)入根文件系統(tǒng)后,進(jìn)入progressbar所在的目錄中:
/#cd/mnt
執(zhí)行:
/mnt#ln–sf/dev/fb/0/dev/fb0
進(jìn)行文件的連接;如果不連接,會(huì)出現(xiàn)如下提示信息:
can’topenframebufferdevice/dev/fb0
can’topenframebufferdevice/dev/fb0
drivercannotconnect
執(zhí)行:
/mnt#exportQTDIR=進(jìn)行Qt目錄環(huán)境變量的設(shè)置;如果不連接,會(huì)出現(xiàn)如下提示信息:
Cannotfindfontdefinitionfile/usr/local/qt-embedded/lib/fonts/fontdir-is$QTDIRsetcorrectly?
最后執(zhí)行progressbar程序:
/mnt#./progr
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年環(huán)保產(chǎn)品購(gòu)銷合同標(biāo)準(zhǔn)文本一
- 2024-2030年中國(guó)奶茶粉行業(yè)市場(chǎng)銷售渠道及未來趨勢(shì)發(fā)展分析報(bào)告
- 2024-2030年中國(guó)大數(shù)據(jù)金融行業(yè)發(fā)展創(chuàng)新模式及投資規(guī)劃分析報(bào)告
- 2024-2030年中國(guó)垃圾轉(zhuǎn)運(yùn)車行業(yè)競(jìng)爭(zhēng)格局展望及投資策略分析報(bào)告
- 2024-2030年中國(guó)印刷機(jī)械制造行業(yè)產(chǎn)銷需求及投資策略分析報(bào)告
- 2024年版給排水系統(tǒng)安裝作業(yè)勞務(wù)合作合同版B版
- 2024年智能穿戴設(shè)備設(shè)計(jì)優(yōu)化與功能升級(jí)合同3篇
- 2024年物資購(gòu)銷合同范例
- 眉山藥科職業(yè)學(xué)院《首飾材料與首飾設(shè)計(jì)實(shí)踐》2023-2024學(xué)年第一學(xué)期期末試卷
- 2024勞動(dòng)資源開發(fā)合同3篇
- 河南省鄭州市二中共同體2023-2024學(xué)年八年級(jí)上學(xué)期期末數(shù)學(xué)試卷(含解析)
- 洛陽(yáng)市2023-2024學(xué)年九年級(jí)上學(xué)期期末考試英語(yǔ)試題和答案
- 《二維材料的未來》課件
- 砂漿行業(yè)銷售技巧分析
- 初中數(shù)學(xué)的有效教學(xué)(小課課題研究)
- 小學(xué)禁毒教育教學(xué)大綱
- 土石方外運(yùn)方案
- 2023-2024學(xué)年四川省成都市高一上英語(yǔ)期末考試題(含答案和音頻)
- 2024年中考英語(yǔ)二輪復(fù)習(xí)學(xué)案連詞
- 肛腸科患者的疼痛管理策略與實(shí)踐經(jīng)驗(yàn)
- 風(fēng)電項(xiàng)目投資計(jì)劃書
評(píng)論
0/150
提交評(píng)論