




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、基于QT的GUI設(shè)計(jì)摘 要目前,嵌入式系統(tǒng)開(kāi)展迅速,應(yīng)用廣泛?;赒t/E的嵌入式GUI設(shè)計(jì)成為國(guó)家以及局部企業(yè)支持的重點(diǎn)方向。隨著當(dāng)前各種手持設(shè)備、無(wú)線(xiàn)設(shè)備及信息家電等嵌入式產(chǎn)品的迅猛開(kāi)展,相應(yīng)的嵌入式軟硬件設(shè)計(jì)技術(shù)也在發(fā)生深刻的變化。如今,越來(lái)越多的嵌入式終端需要一個(gè)圖形化的人機(jī)接口界面GUI,良好的人機(jī)接口界面是嵌入式系統(tǒng)設(shè)計(jì)的一個(gè)關(guān)鍵技術(shù),能夠極大地提高人機(jī)交互的效率。本文詳細(xì)闡述了在博創(chuàng)公司的UP-TECHPXA270-S 教學(xué)科研平臺(tái)上實(shí)現(xiàn)基于嵌入式Linux系統(tǒng)和QT4圖形界面顯示終端的過(guò)程。本文以工程?基于linux&QT4的多媒體瀏覽器?為實(shí)例,對(duì)該系統(tǒng)圖形用戶(hù)界面以及功能實(shí)
2、現(xiàn)等進(jìn)行了描述。關(guān)鍵詞: 嵌入式Linux QT4 GUIGUI design based on the QTABSTRACTAt present, the rapid development of embedded systems, a wide range of applications. Based on Qt / E embedded GUI design to become part of the country and the focus of the direction of enterprise support. With the current variety of hand
3、held devices, wireless devices and information appliances, such as the rapid development of embedded products, the corresponding design of embedded hardware and software technology is also undergoing profound changes. Today, more and more embedded devices need Graphical User Interface (GUI), a good
4、Graphical User Interface design of embedded systems is a key technology to greatly improve the efficiency of human-computer interaction. Described in detail in this article, The UP-TECHPXA270-S teaching and research platform based on embedded systems and Linux display terminal QT4 GUI process. In th
5、is paper, the project Multimedia Browser based on the linux platform & QT4 as an example, graphical user interface of the system, as well as the realization of such functions are described.Key word: Embedded Linux QT4 GUI目 錄 TOC o 1-3 h z u HYPERLINK l _Toc231010963 摘要 PAGEREF _Toc231010963 h I HYPE
6、RLINK l _Toc231010964 ABSTRACT PAGEREF _Toc231010964 h II HYPERLINK l _Toc231010965 1 前言 PAGEREF _Toc231010965 h 6 HYPERLINK l _Toc231010966 1.1選題背景 PAGEREF _Toc231010966 h 6 HYPERLINK l _Toc231010967 1.2選題目標(biāo) PAGEREF _Toc231010967 h 6 HYPERLINK l _Toc231010968 1.3需求分析 PAGEREF _Toc231010968 h 7 HYPER
7、LINK l _Toc231010969 1.3.1用戶(hù)需求分析 PAGEREF _Toc231010969 h 7 HYPERLINK l _Toc231010970 1.3.2功能需求分析 PAGEREF _Toc231010970 h 7 HYPERLINK l _Toc231010971 1.4 本章小結(jié) PAGEREF _Toc231010971 h 9 HYPERLINK l _Toc231010972 2 QT4的GUI簡(jiǎn)介 PAGEREF _Toc231010972 h 10 HYPERLINK l _Toc231010973 2.1 QT的背景介紹 PAGEREF _Toc2
8、31010973 h 10 HYPERLINK l _Toc231010974 2.2 QT實(shí)現(xiàn)的結(jié)構(gòu)原理 PAGEREF _Toc231010974 h 10 HYPERLINK l _Toc231010975 2.3 QT應(yīng)用程序的實(shí)現(xiàn) PAGEREF _Toc231010975 h 11 HYPERLINK l _Toc231010976 2.4 本章小結(jié) PAGEREF _Toc231010976 h 12 HYPERLINK l _Toc231010977 3 系統(tǒng)框架描述 PAGEREF _Toc231010977 h 13 HYPERLINK l _Toc231010978 3.
9、1 系統(tǒng)模塊 PAGEREF _Toc231010978 h 13 HYPERLINK l _Toc231010979 3.2 主要功能 PAGEREF _Toc231010979 h 13 HYPERLINK l _Toc231010980 3.3平臺(tái)簡(jiǎn)介 PAGEREF _Toc231010980 h 14 HYPERLINK l _Toc231010981 3.4 UP-TECHPXA270-S核心模塊資源 PAGEREF _Toc231010981 h 15 HYPERLINK l _Toc231010982 3.5 本章小結(jié) PAGEREF _Toc231010982 h 16 HY
10、PERLINK l _Toc231010983 4 詳細(xì)設(shè)計(jì) PAGEREF _Toc231010983 h 17 HYPERLINK l _Toc231010984 4.1主界面設(shè)計(jì) PAGEREF _Toc231010984 h 18 HYPERLINK l _Toc231010985 4.2播放器模塊設(shè)計(jì) PAGEREF _Toc231010985 h 20 HYPERLINK l _Toc231010986 4.2.1 MPlayer在嵌入式開(kāi)發(fā)系統(tǒng)中的應(yīng)用 PAGEREF _Toc231010986 h 20 HYPERLINK l _Toc231010987 4.2.2 QT中調(diào)用
11、Mplayer PAGEREF _Toc231010987 h 20 HYPERLINK l _Toc231010988 4.2.3 播放器模塊GUI界面設(shè)計(jì) PAGEREF _Toc231010988 h 22 HYPERLINK l _Toc231010989 4.3網(wǎng)頁(yè)瀏覽器模塊設(shè)計(jì) PAGEREF _Toc231010989 h 23 HYPERLINK l _Toc231010990 4.3.1 Webkit引擎 PAGEREF _Toc231010990 h 23 HYPERLINK l _Toc231010991 4.3.2 QT調(diào)用Webkit類(lèi)和實(shí)現(xiàn)方法 PAGEREF _T
12、oc231010991 h 23 HYPERLINK l _Toc231010992 4.3.3網(wǎng)頁(yè)瀏覽器GUI界面設(shè)計(jì) PAGEREF _Toc231010992 h 25 HYPERLINK l _Toc231010993 4.4數(shù)碼相框模塊設(shè)計(jì) PAGEREF _Toc231010993 h 25 HYPERLINK l _Toc231010994 4.4.1 QT的繪圖設(shè)備 PAGEREF _Toc231010994 h 25 HYPERLINK l _Toc231010995 4.4.2 數(shù)碼相框的接口函數(shù) PAGEREF _Toc231010995 h 26 HYPERLINK l
13、 _Toc231010996 4.4.3 mount相關(guān)函數(shù)的使用 PAGEREF _Toc231010996 h 28 HYPERLINK l _Toc231010997 4.4.4 數(shù)碼相框的GUI界面設(shè)計(jì) PAGEREF _Toc231010997 h 29 HYPERLINK l _Toc231010998 4.5 時(shí)間設(shè)置模塊設(shè)計(jì) PAGEREF _Toc231010998 h 30 HYPERLINK l _Toc231010999 4.6 QT自定義風(fēng)格樣式設(shè)計(jì) PAGEREF _Toc231010999 h 31 HYPERLINK l _Toc231011000 4.7 局域
14、聊天模塊設(shè)計(jì) PAGEREF _Toc231011000 h 33 HYPERLINK l _Toc231011001 4.7.1 效勞端設(shè)計(jì) PAGEREF _Toc231011001 h 33 HYPERLINK l _Toc231011002 4.7.2 客戶(hù)端設(shè)計(jì) PAGEREF _Toc231011002 h 34 HYPERLINK l _Toc231011003 4.8 Tslib與觸摸屏 PAGEREF _Toc231011003 h 35 HYPERLINK l _Toc231011004 4.8.1 觸摸屏原理 PAGEREF _Toc231011004 h 35 HYPE
15、RLINK l _Toc231011005 4.8.2 Tslib 1.4的編譯 PAGEREF _Toc231011005 h 37 HYPERLINK l _Toc231011006 4.8.3 TsLib的相關(guān)配置 PAGEREF _Toc231011006 h 37 HYPERLINK l _Toc231011007 4.9 本章小結(jié) PAGEREF _Toc231011007 h 38 HYPERLINK l _Toc231011008 5 交叉編譯與環(huán)境配置 PAGEREF _Toc231011008 h 39 HYPERLINK l _Toc231011009 5.1 Linux
16、內(nèi)核裁剪與燒寫(xiě) PAGEREF _Toc231011009 h 39 HYPERLINK l _Toc231011010 5.2 編譯QTE源碼 PAGEREF _Toc231011010 h 40 HYPERLINK l _Toc231011011 5.3交叉編譯與環(huán)境配置 PAGEREF _Toc231011011 h 41 HYPERLINK l _Toc231011012 5.4移植運(yùn)行庫(kù)和字體庫(kù) PAGEREF _Toc231011012 h 42 HYPERLINK l _Toc231011013 5.5設(shè)置開(kāi)發(fā)板連接以太網(wǎng) PAGEREF _Toc231011013 h 43 H
17、YPERLINK l _Toc231011014 5.6運(yùn)行程序 PAGEREF _Toc231011014 h 43 HYPERLINK l _Toc231011015 5.7 本章小結(jié) PAGEREF _Toc231011015 h 43 HYPERLINK l _Toc231011016 6 測(cè)試及運(yùn)行結(jié)果 PAGEREF _Toc231011016 h 44 HYPERLINK l _Toc231011017 6.1 測(cè)試目標(biāo) PAGEREF _Toc231011017 h 44 HYPERLINK l _Toc231011018 6.2 測(cè)試預(yù)期結(jié)果 PAGEREF _Toc2310
18、11018 h 44 HYPERLINK l _Toc231011019 6.3 運(yùn)行結(jié)果 PAGEREF _Toc231011019 h 45 HYPERLINK l _Toc231011020 6.4 本章小結(jié) PAGEREF _Toc231011020 h 48 HYPERLINK l _Toc231011021 7 論文總結(jié) PAGEREF _Toc231011021 h 49 HYPERLINK l _Toc231011022 參考文獻(xiàn) PAGEREF _Toc231011022 h 50 HYPERLINK l _Toc231011023 附錄 PAGEREF _Toc231011
19、023 h 51 HYPERLINK l _Toc231011024 謝辭 PAGEREF _Toc231011024 h 601 前言1.1選題背景隨著新的ARM芯片不斷問(wèn)世以及這些芯片的價(jià)格下降,嵌入式產(chǎn)品開(kāi)始潛移默化的取代早期的一些單片機(jī),并在社會(huì)各行各業(yè)中占有越來(lái)越重要的位置,嵌入式產(chǎn)品也由此成為眾多工程師選擇開(kāi)發(fā)高端產(chǎn)品的芯片首選。 中國(guó)成為“世界制造中心甚至“設(shè)計(jì)中心的趨勢(shì),必然導(dǎo)致對(duì)小型數(shù)字控制系統(tǒng)的需求越來(lái)越大。在嵌入式系統(tǒng)開(kāi)發(fā)方面,最核心的就是微處理器芯片和嵌入式操作系統(tǒng)。其中ARM已經(jīng)給出了理想的一個(gè)答案,而在嵌入式操作系統(tǒng)方面,從上世紀(jì)80年代開(kāi)始,出現(xiàn)了各種各樣的商用嵌
20、入式操作系統(tǒng)百家爭(zhēng)鳴的局面,比擬著名的有WindRiver公司的VX Works、PSOS和Windows CE等等,這些操作系統(tǒng)大局部是為專(zhuān)有系統(tǒng)而開(kāi)發(fā)的。嵌入式Linux是一款遵循GPL協(xié)議的免費(fèi)使用和自由傳播的實(shí)時(shí)嵌入式操作系統(tǒng),并且擁有一大批的社區(qū)維護(hù)和愛(ài)好者。它的源碼開(kāi)放性允許任何人可以獲取并修改Linux的源代碼。這樣一方面大大的降低了開(kāi)發(fā)的本錢(qián),另一個(gè)方面又可以提高開(kāi)發(fā)產(chǎn)品的效率。嵌入式Linux支持X86,Power PC,ARM,XSCALE等多種體系結(jié)構(gòu),并且移植到多種硬件平臺(tái)。這對(duì)于經(jīng)費(fèi),時(shí)間受限制的研究和開(kāi)發(fā)工程很有吸引力,并且Linux采取一個(gè)統(tǒng)一的框架對(duì)硬件管理,所
21、以上層應(yīng)用程序可以方便的移植到不同的平臺(tái)上?;谝陨系脑?,本人決定使用嵌入式Linux搭配PXA270開(kāi)發(fā)板來(lái)構(gòu)建這個(gè)工程。在系統(tǒng)應(yīng)用層GUI中主要使用QT,QT是一個(gè)多平臺(tái)的C+圖形用戶(hù)界面應(yīng)用程序框架。它提供給應(yīng)用程序開(kāi)發(fā)者建立藝術(shù)級(jí)的圖形用戶(hù)界面所需的所用功能。Qt是完全面向?qū)ο蟮暮苋菀讛U(kuò)展,并且允許真正地組件編程。用戶(hù)使用 C+,對(duì)庫(kù)的穩(wěn)定性,健壯性要求比擬高,并且希望跨平臺(tái)開(kāi)發(fā)的話(huà),那么使用 Qt 是較好的選擇。1.2選題目標(biāo)基于上述背景,開(kāi)發(fā)一個(gè)多媒體瀏覽器工程,本人使用嵌入式Linux搭配PXA270開(kāi)發(fā)板來(lái)構(gòu)建這個(gè)工程。在系統(tǒng)應(yīng)用層GUI中主要使用一個(gè)基于多平臺(tái)的C+圖形用戶(hù)
22、界面應(yīng)用程序框架-QT。利用QT4編寫(xiě)應(yīng)用程序,例如數(shù)碼相框模塊,電子書(shū)模塊,瀏覽器模塊,多媒體音視頻模塊等。根據(jù)系統(tǒng)的需求,裁減、移植Linux內(nèi)核,制作適宜的文件系統(tǒng)。分析系統(tǒng)功能和接口,添加各種驅(qū)動(dòng)程序,如:USB驅(qū)動(dòng),藍(lán)牙驅(qū)動(dòng)等。根據(jù)應(yīng)用程序中的每個(gè)功能模塊,分析各個(gè)模塊的用戶(hù)界面接口和對(duì)人機(jī)交互圖形化用戶(hù)界面的接口設(shè)計(jì)。1.3需求分析1.3.1用戶(hù)需求分析根據(jù)用戶(hù)需求的分析,市場(chǎng)上也推出了多功能、多應(yīng)用的產(chǎn)品,今年多媒體產(chǎn)品的變化歸納為“一低兩多:本錢(qián)低、產(chǎn)品多、功能多。多媒體電子產(chǎn)品的市場(chǎng)需求將穩(wěn)步上升,例如具備音視頻功能的便攜式多媒體產(chǎn)品將會(huì)持續(xù)增長(zhǎng),預(yù)計(jì)年銷(xiāo)量將會(huì)由 2006年
23、的3億臺(tái)左右增至2021年的10億臺(tái)。面對(duì)如此巨大的市場(chǎng),終端廠(chǎng)商在進(jìn)行功能和方案選擇時(shí)會(huì)充分掌握市場(chǎng)動(dòng)向。對(duì)此,本工程的操作系統(tǒng)是基于開(kāi)源的Linux系統(tǒng),這在本錢(qián)上有著很大的優(yōu)勢(shì),基于免費(fèi)版的QT4也是使得系統(tǒng)的功能接口相當(dāng)強(qiáng)大。未來(lái)幾年, 中國(guó)多媒體電子產(chǎn)品市場(chǎng)將逐漸走向成熟市場(chǎng)需求和產(chǎn)品銷(xiāo)量會(huì)保持大幅增長(zhǎng)產(chǎn)品供給鏈中的各類(lèi)企業(yè)將獲得巨大商機(jī)。尤其是隨著產(chǎn)品價(jià)格的不斷下降,這種快速開(kāi)展的態(tài)勢(shì)會(huì)愈加明顯。中國(guó)市場(chǎng)必然會(huì)獲得更大的開(kāi)展空間。由此,本工程也適應(yīng)用戶(hù)需求,開(kāi)發(fā)多種功能模塊:數(shù)碼相框功能,音樂(lè)播放,視頻播放,日歷、時(shí)鐘顯示,網(wǎng)頁(yè)瀏覽器,電子書(shū),局域聊天等。1.3.2功能需求分析根據(jù)
24、用戶(hù)需求,和對(duì)產(chǎn)品的定位,劃分以下功能:表1-1 支持功能所需硬件1 圖片瀏覽 格式j(luò)pg/bmp2 音樂(lè)播放格式MP3/WAV7 視頻播放, 格式AVI3 日歷、時(shí)鐘顯示4 網(wǎng)頁(yè)瀏覽器5 U盤(pán)支持6 藍(lán)牙傳輸7 文本顯示8 局域聊天1 控制芯片PAX27064Mflash64MSRAM2 顯示屏 8in LCD3 音頻解碼器 CS42014 MMC總線(xiàn)控制器5 USB 主從接口6 藍(lán)牙模塊7 網(wǎng)卡在系統(tǒng)層將移植進(jìn)嵌入式linux的操作系統(tǒng)。嵌入式linux系統(tǒng)穩(wěn)定,功能強(qiáng)大,支持多種硬件平臺(tái),簡(jiǎn)單易用且開(kāi)放源代碼,可廣泛用于信息家電領(lǐng)域,當(dāng)然應(yīng)用“多媒體播放器這個(gè)工程來(lái)說(shuō)就是再適宜不過(guò)了。該
25、linux操作系統(tǒng)采用linux2.6.9內(nèi)核,其他功能支持如下所示。驅(qū)動(dòng)程序包含串口、100M網(wǎng)口、IDE接口、SD/MMC卡、NORFlash、AC97音頻錄音放音、LCD、觸摸屏、USBHOST、USBDEVICE、Camera、鍵盤(pán)、RTC等多種驅(qū)動(dòng)。驅(qū)動(dòng)程序包含串口、100M網(wǎng)口、IDE接口、SD/MMC卡、NORFlash、AC97音頻錄音放音、LCD、觸摸屏、USBHOST、USBDEVICE、Camera、鍵盤(pán)、RTC等多種驅(qū)動(dòng),支持多種文件系統(tǒng),像ROMFS,CRAMFS,F(xiàn)AT等等,支持IDE硬盤(pán)的掛接,支持framebuffer,支持USBHOST,支持QT等圖形系統(tǒng),支
26、持MP3播放和視頻播放,支持多種網(wǎng)絡(luò)應(yīng)用,像FTP, ,Telnet之類(lèi)的網(wǎng)絡(luò)應(yīng)用??紤]到開(kāi)發(fā)本錢(qián)、耗能和開(kāi)源軟件的優(yōu)勢(shì)等問(wèn)題,本工程選用嵌入式lin操作系統(tǒng)是非常適合的。linux操作系統(tǒng)在內(nèi)核的剪裁與編譯,制定出適合ARM體系的PXA270處理器的操作系統(tǒng)等這些方面的技術(shù)已十分成熟。而在界面開(kāi)發(fā)方面,使用的開(kāi)發(fā)軟件是TROLLTAECH公司的QT4,它功能強(qiáng)大并且是可視開(kāi)發(fā),便于對(duì)界面設(shè)計(jì)的開(kāi)發(fā)?!岸嗝襟w瀏覽器所有的功能包括jpg/bmp 圖片的播放,MP3,WAV音頻播放,AVI視頻播放,藍(lán)牙傳輸,無(wú)線(xiàn)網(wǎng)卡的連接,各種卡類(lèi)的識(shí)別與使用。而在linux環(huán)境下實(shí)現(xiàn)這些功能有很多相應(yīng)功能的開(kāi)源
27、軟件可以借鑒來(lái),經(jīng)過(guò)有針對(duì)性地處理后使其適合本工程產(chǎn)品使用,在技術(shù)上是完全可以做到的。本工程所需的硬件清單如下:表1-2具有多媒體處理能力的CPU芯片較大容量的存儲(chǔ)器USB接口,USB鼠標(biāo)、鍵盤(pán)USB Blue真彩LCD顯示器音頻解碼,輸出芯片視頻解碼,輸出芯片支持藍(lán)牙通信的芯片組串行接口100M EtherNet 網(wǎng)卡小型鍵盤(pán)供電,及其它輔助芯片根據(jù)上表,需要的硬件模塊在UPTECHPXA270S硬件實(shí)驗(yàn)平臺(tái)上已一應(yīng)俱全。音視頻模塊,對(duì)音視頻輸入輸出功能都有著很好的支持;存儲(chǔ)卡模塊支持SD/MMC卡;USB主從接口模塊支持U盤(pán)讀取功能;藍(lán)牙模塊支持與外部藍(lán)牙設(shè)備間的通訊等等。各種各樣的接口便
28、于我們擴(kuò)展設(shè)計(jì)開(kāi)發(fā),當(dāng)然這為“多媒體播放器在插槽功能,音視頻輸出功能,USB通訊功能等方面提供了很好的硬件條件。在此平臺(tái)上還配制了8英寸的TFT真彩液晶屏,可模擬的充當(dāng)此次工程“多媒體播放器的用戶(hù)交互平臺(tái),支持640*480的分辨率。UPTECHPXA270S在存儲(chǔ)系統(tǒng)方面也有著很高的配置,內(nèi)置了高性能價(jià)格比的NAND FLASH 64M內(nèi)存,支持大容量的用戶(hù)差異圖形圖片和媒體文件的存儲(chǔ)。CPU的能力當(dāng)然是毋庸置疑的,Intel Xscale結(jié)構(gòu)芯片的PXA270在各方面都表現(xiàn)了很強(qiáng)悍的能力,在目前市場(chǎng)上來(lái)說(shuō)也是一款很先進(jìn)的處理器芯片。PXA270處理器是Intel公司目前性能最為強(qiáng)勁的移動(dòng)處
29、理器,已經(jīng)成為高端移動(dòng)設(shè)備中最受歡送的處理器之一。PXA270最高主頻可達(dá)624MHz,它引入了X86架構(gòu)奔騰4系列上的多媒體技術(shù)MMX技術(shù),能夠大大提升多媒體處理能力,用戶(hù)通過(guò)該技術(shù)可以在VGA上面播放高質(zhì)量的MPGE4視頻;同時(shí)參加了Intel SpeedStep動(dòng)態(tài)電源管理技術(shù),在保證CPU性能的情況下,最大限度地降低移動(dòng)設(shè)備功耗。1.4 本章小結(jié)本章主要介紹本工程的選題背景、意義,選題目標(biāo)和工程需求分析,根據(jù)產(chǎn)品市場(chǎng)和本人技術(shù)水平情況,按需求劃分軟件功能模塊,還根據(jù)軟件功能和現(xiàn)有資源的性能對(duì)硬件需求做了詳細(xì)分析。2 QT4的GUI簡(jiǎn)介2.1 QT的背景介紹Qt/Embedded 是著名
30、的Qt庫(kù)開(kāi)發(fā)商Trolltech公司開(kāi)發(fā)的面向嵌入式系統(tǒng)的Qt版本,開(kāi)發(fā)人員多為KDE工程的核心開(kāi)發(fā)人員。許多基于Qt的X Window程序可以非常方便地移植到Qt/Embedded上,與X11版本的Qt在最大程度上接口兼容,延續(xù)了在X上的強(qiáng)大功能,在底層徹底摒棄了X lib,僅采用framebuffer作為底層圖形接口。Qt/Embedded類(lèi)庫(kù)完全采用C+封裝。豐富的控件資源和較好的可移植性是Qt/Embedded最為優(yōu)秀的一方面,使用X下的開(kāi)發(fā)工具Qt Designer可以直接開(kāi)發(fā)基于Qt/Embedded的UI用戶(hù)操作接口界面。越來(lái)越多的第三方軟件公司也開(kāi)始采用Qt/Embedded開(kāi)
31、發(fā)嵌入式Linux下的應(yīng)用軟件。2.2 QT實(shí)現(xiàn)的結(jié)構(gòu)原理Qt/Embedded是Trolltech公司開(kāi)發(fā)的面向嵌入式系統(tǒng)的Qt版本,與X11版本的Qt在最大程度上接口兼容,采用幀緩存framebuffer作為底層圖形接口。Qt/Embedded類(lèi)庫(kù)完全采用C+封裝,并且有著豐富的控件資源以及較好的可移植性,大范圍的Qt/Embedded API可用于多種開(kāi)發(fā)工程。Qt/Embedded的實(shí)現(xiàn)結(jié)構(gòu)如下:QT的應(yīng)用程序QT的圖形事件QT/EmbeddedFrameBuffer 設(shè)備驅(qū)動(dòng)OS:Linux硬件平臺(tái)圖2-1 QT的實(shí)現(xiàn)結(jié)構(gòu)圖Qt/Embedded 的底層圖形引擎基于framebuff
32、er。Framebuffer是在Linux內(nèi)核架構(gòu)版本2.2以后推出的標(biāo)準(zhǔn)顯示設(shè)備驅(qū)動(dòng)接口。Framebuffer 驅(qū)動(dòng)程序的實(shí)現(xiàn)分為兩個(gè)方面:一方面是對(duì)LCD及其相關(guān)局部的初始化,包括畫(huà)在緩沖區(qū)的創(chuàng)立和對(duì)DMA通道的設(shè)置;另外一方面是對(duì)畫(huà)面緩沖區(qū)的讀寫(xiě),具體到代碼為read、write、lseek等系統(tǒng)調(diào)用接口。至于將畫(huà)面緩沖區(qū)的內(nèi)容輸出到LCD顯示屏上,那么由硬件自動(dòng)完成。對(duì)于軟件來(lái)說(shuō)是透明的。當(dāng)對(duì)于DMA通道和畫(huà)面緩沖區(qū)設(shè)置完成后,DMA開(kāi)始正常工作,并將緩沖區(qū)中的內(nèi)容不斷發(fā)送到LCD上。這個(gè)過(guò)程是基于DMA對(duì)于LCD的不斷刷新的。基于該特性,framebuffer驅(qū)動(dòng)程序必須將畫(huà)面緩沖
33、區(qū)的存儲(chǔ)空間物理空間重新映射到一個(gè)不加高緩存和寫(xiě)緩存的虛擬地址區(qū)間中,這樣能才保證應(yīng)用程序通過(guò)mmap將該緩存映射到用戶(hù)空間后,對(duì)于該畫(huà)面緩存的寫(xiě)操作能夠?qū)崟r(shí)的表達(dá)在LCD上。QT程序是基于C+編寫(xiě)的,圖形用戶(hù)界面編程同時(shí)需要運(yùn)行效率和高水平的靈活性。Qt通過(guò)結(jié)合C+的速度為這一領(lǐng)域提供了Qt對(duì)象模型。Qt把下面這些特性添加到了C+當(dāng)中: 一種被稱(chēng)為信號(hào)和槽的非常強(qiáng)大的機(jī)制;可查詢(xún)和可設(shè)計(jì)的屬性項(xiàng);強(qiáng)大的事件和事件過(guò)濾器;根據(jù)上下文進(jìn)行國(guó)際化的字符串翻譯;完善的時(shí)間間隔驅(qū)動(dòng)的計(jì)時(shí)器等。 許多Qt的特性是基于QObject的繼承,通過(guò)標(biāo)準(zhǔn)C+技術(shù)實(shí)現(xiàn)的。QApplication是必須構(gòu)造的Qt主
34、對(duì)象,需要在一開(kāi)始的時(shí)候就構(gòu)造這個(gè)對(duì)象,并把命令行參數(shù)傳遞給這個(gè)對(duì)象,每個(gè)Qt應(yīng)用程序有且僅有一個(gè)QApplication對(duì)象,該對(duì)象必須在做其他事之前創(chuàng)立,這個(gè)對(duì)象處理一些底層操作,如事件處理、字符串本地化和控制界面外觀(guān)等。信號(hào)和信號(hào)處理函數(shù)是GUI應(yīng)用程序用來(lái)響應(yīng)用戶(hù)輸入的根本機(jī)制,也是所有GUI庫(kù)的核心特征,Qt的信號(hào)處理機(jī)制由信號(hào)(signal)和槽(slot)構(gòu)成,它們相當(dāng)于GTK+中的信號(hào)和回調(diào)函數(shù)。在Qt中回調(diào)函數(shù)就叫做槽。信號(hào)和槽用于對(duì)象間的通訊,它的根本語(yǔ)法為: connect(object1,signal1,object2,slot1);2.3 QT應(yīng)用程序的實(shí)現(xiàn)由以上簡(jiǎn)介
35、可知,Qt是一個(gè)創(chuàng)立GUI程序的C+類(lèi)庫(kù),編寫(xiě)Qt應(yīng)用程序的主要工作是基于已有的Qt類(lèi)編寫(xiě)用戶(hù)類(lèi)。Qt提供了一組范圍相當(dāng)廣泛的C+類(lèi)庫(kù),并包含了幾種命令行和圖形界面的工具,有效地使用這些工具可以加速開(kāi)發(fā)過(guò)程。Qt Designer:Qt設(shè)計(jì)器。用來(lái)可視化地設(shè)計(jì)應(yīng)用程序界面。Qt Linguist:Qt語(yǔ)言學(xué)家。用來(lái)翻譯應(yīng)用程序。以此提供對(duì)多種語(yǔ)言的支持。Qmake:使用此工具可以由簡(jiǎn)單的、與平臺(tái)無(wú)關(guān)的工程文件來(lái)生成編譯所需的Makefile。Qt Assistant:關(guān)于Qt的幫助文件。類(lèi)似于MSDN。可以快速地發(fā)現(xiàn)你所需要的幫助。moc:元對(duì)象編譯器。uic:用戶(hù)界面編譯器。在程序編譯時(shí)被自
36、動(dòng)調(diào)用,通過(guò)ui_*.h文件生成應(yīng)用程序界面。Qt應(yīng)用程序的設(shè)計(jì)使用基于工程的方法,并通過(guò).pro文件進(jìn)行工程管理。實(shí)現(xiàn)應(yīng)用程序的第一步是編寫(xiě).pro文件,然后使用QT4自帶的qmake工具生成Makefile,最后進(jìn)行源代碼的編譯。Qmake的過(guò)程如下:qmake project /生成.pro的工程文件qmake /生成Makefilemake /編譯2.4 本章小結(jié)隨著越來(lái)越多的第三方軟件公司利用Qt/Embedded開(kāi)發(fā)嵌入式Linux下的應(yīng)用軟件,Qt的應(yīng)用已經(jīng)越來(lái)越廣泛。本章主要介紹了QT的背景和描述了QT實(shí)現(xiàn)的結(jié)構(gòu)原理,還簡(jiǎn)述了QT的相關(guān)特性。此外,也介紹了QT應(yīng)用程序開(kāi)發(fā)時(shí)的相
37、關(guān)工具。3 系統(tǒng)框架描述3.1 系統(tǒng)模塊系統(tǒng)OS層使用嵌入式Linux系統(tǒng),底層調(diào)用多種驅(qū)動(dòng),其中包括:USB鍵盤(pán)、鼠標(biāo)驅(qū)動(dòng),網(wǎng)卡驅(qū)動(dòng),藍(lán)牙驅(qū)動(dòng),觸摸屏驅(qū)動(dòng)等。軟件層API使用QT4自由版提供的API。應(yīng)用層包括六大模塊,每個(gè)模塊有各自的GUI界面。嵌入式Linux 操作系統(tǒng)觸摸屏LCD驅(qū)動(dòng)藍(lán)牙驅(qū)動(dòng)網(wǎng)卡驅(qū)動(dòng)USB驅(qū)動(dòng)鍵鼠驅(qū)動(dòng)嵌入式GUIQT4圖片瀏覽電子書(shū)局域聊天時(shí)鐘、日歷多媒體網(wǎng)頁(yè)瀏覽應(yīng)用層接口層系統(tǒng)層PXA 270開(kāi)發(fā)板硬件層圖3-1 系統(tǒng)模塊圖3.2 主要功能圖片瀏覽模塊實(shí)現(xiàn)了放大縮小、旋轉(zhuǎn)、全屏瀏覽、前移、后移、瀏覽U盤(pán)中的圖片,瀏覽藍(lán)牙共享的圖片,從指定目錄中瀏覽圖片,支持BMP、J
38、PE、JPEG、PNG、JPG、GIF等格式。電子書(shū)瀏覽功能支持txt格式的文本文檔。網(wǎng)頁(yè)瀏覽功能:基于WebKit引擎的網(wǎng)頁(yè)瀏覽。時(shí)鐘、日歷顯示:利用友好的界面顯示、設(shè)置時(shí)鐘、日歷等。多媒體播放模塊:利用MPlayer的解碼器,實(shí)現(xiàn)以下功能:1.音頻播放功能:能播放MP3等格式的音頻文件。2.視頻播放功能:支持AVI格式的視頻播放。 局域聊天:可以通過(guò)局域網(wǎng)多機(jī)通訊。3.3平臺(tái)簡(jiǎn)介本系統(tǒng)設(shè)計(jì)使用的硬件平臺(tái)是由北京博創(chuàng)興業(yè)科技開(kāi)發(fā)的UP-TECHPXA270-S 實(shí)驗(yàn)平臺(tái)。該平臺(tái)是基于Intel XSCALE 架構(gòu)最新的PXA270 嵌入式微處理器最高主頻可達(dá)624MHz,參加了Wireles
39、s MMX 技術(shù),大大提升了多媒體處理能力;同時(shí)PXA270 還參加了Intel SpeedStep動(dòng)態(tài)電源管理技術(shù),在保證CPU 性能的情況下,最大限度地降低移動(dòng)設(shè)備功耗。PXA270可以廣泛應(yīng)用于PDA、智能 、PMP 產(chǎn)品中。博創(chuàng)科技的UP-TECHPXA270-S 教學(xué)科研平臺(tái)主要是面向計(jì)算機(jī)、軟件專(zhuān)業(yè)的高端平臺(tái),微處理器主頻穩(wěn)定運(yùn)行在520MHz,可運(yùn)行WinCE5.0 和Linux 2.6.x 操作系統(tǒng),支持QT/E、miniGUI 等嵌入式圖形界面,提供完整的驅(qū)動(dòng)和應(yīng)用程序。圖3-2 UP-TECHPXA270-S 教學(xué)科研平臺(tái)圖UP-TECHPXA270-S 教學(xué)科研平臺(tái)由處理
40、器核心板、主板及LCD 三部份組成。核心板和主板的接口設(shè)計(jì)充分考慮了升級(jí)產(chǎn)品的兼容性,核心板可以升級(jí)到PXA271、PXA272 微處理器,而主板資源不變。此外,除了具有豐富的接口資源,良好的可擴(kuò)展性也是UP-TECHPXA270-S 平臺(tái)的一大特色。 UP-TECHPXA270-S 預(yù)留了32 位擴(kuò)展總線(xiàn)接口,與博創(chuàng)UP-NetARM2410、UP-NetARM2410-S 平臺(tái)兼容,從而大大減輕了用戶(hù)擴(kuò)展新功能的負(fù)擔(dān)。PXA270 核心板CPUSDRAMNand FlashNorthFlash總線(xiàn)隔離驅(qū)動(dòng)電路10/100M 網(wǎng)卡RJ45 接口MIC、LINE-IN/OUT模擬功率放大器AC
41、97 CODEC觸摸屏接口KEYPADRTC 實(shí)時(shí)鐘RS232 串口VGA 輸出640*480 TFT 16bitLCD 液晶屏USB1.1 DEVICEUSB1.1 HOST4 端口USB HUB圖3-3 以PXA270為核心的硬件架構(gòu)圖3.4 UP-TECHPXA270-S核心模塊資源基于Intel XScale 架構(gòu)內(nèi)核的嵌入式處理器PXA270,內(nèi)部集成iwmmx 指令,加速處理器對(duì)多媒體數(shù)據(jù)的 處理速度。輔助CPULPC2119 ARM7TDMI-S。系統(tǒng)穩(wěn)定工作在520MHZ 主頻,64MB SDRAM、16MB Nor Flash、64MB Nand Flash 庫(kù)。UP-TEC
42、HPXA270-S 軟件資源:Bootloader:BLOB;操作系統(tǒng):2.6.X;驅(qū)動(dòng)程序:提供所有板級(jí)設(shè)備的驅(qū)動(dòng)程序;UP-TECHPXA270-S 平臺(tái)配套線(xiàn)纜:RJ45 交叉網(wǎng)線(xiàn);DC12V 電源適配器;用戶(hù)自備CAN、RS485 等的連接導(dǎo);PXA270-S 開(kāi)發(fā)平臺(tái)硬件資源:PXA270 Core 小板:PXA270 XScale CPU、64M SDRAM、64M NAND FLASH,16M NorFLASH。通過(guò)256Pin 2mm 間距直插針與主板連接。Double 100M EtherNet 網(wǎng)卡:由兩片DM9000 構(gòu)成的雙網(wǎng)卡,4 HOST / 1 DEVICE US
43、B 接口:PXA270 的主USB 口擴(kuò)展為4 個(gè),由AT43301 構(gòu)成USB HUB,其中電源管理用MIC2505。3 UART/IrDA/RS485: 2 個(gè)RS232 串口。1 個(gè)RS485 串口,1 個(gè)IrDA 收發(fā)器,均從處理器的ICP UART 引出,由FPGA 內(nèi)部邏輯切換。LCD 顯示屏:采用8 寸18bit 真彩屏,同時(shí)預(yù)留一個(gè)24bit LCD 接口。TouchScr: 通過(guò)UCB1400 芯片和AC97 總線(xiàn)實(shí)現(xiàn)。AC97 AUDIO:采用UCB1400 CODEC 和LM4880 功放芯片,具有放音、錄音功能。板載17 鍵小鍵盤(pán):從處理器鍵盤(pán)接口擴(kuò)充。電源、RESET
44、、RTC、JTAG 等必須資源。電源電路具有專(zhuān)門(mén)邏輯,可以實(shí)現(xiàn)軟件關(guān)機(jī)功能。PXA270-S 開(kāi)發(fā)平臺(tái)需要DC12V 供電。ARM7 輔助處理器:平臺(tái)上配置LPC2119 ARM7 芯片,配合擴(kuò)展板可完成市場(chǎng)上LPC2119 開(kāi)發(fā)板的大局部功能。LPC2119 通過(guò)SPI 和IIC 總線(xiàn)與PXA270 通信。AD 電位器:由LPC2119 擴(kuò)展出2 路AD 采集。CAN BUS:設(shè)置2 個(gè)CAN 口,由LPC2119 擴(kuò)展和TJA1050 芯片構(gòu)成。VGA 接口:可以接駁VGA 顯示器。USB2.0 接口:由ISP1760 擴(kuò)展,提供2 個(gè)USB2.0 HOST 接口,1 個(gè)USB2.0 OT
45、G/Device接口。MIC2526 作為電源控制器件。IEEE1394 總線(xiàn)接口:由TSB43AA82PGE 擴(kuò)展出2 個(gè)1394 接口FireWire 火線(xiàn)接口。3.5 本章小結(jié)本章介紹了本工程的系統(tǒng)模塊,包括每個(gè)模塊的功能描述。此外,還介紹了系統(tǒng)的硬件架構(gòu)以及開(kāi)發(fā)平臺(tái)的軟件、硬件模塊資源等。4 詳細(xì)設(shè)計(jì)本系統(tǒng)主界面中心為2D渲染的立體菜單項(xiàng)選擇擇,背景用絢麗圖片襯托,系統(tǒng)共分以下模塊:數(shù)碼相框,音視頻播放器,電子書(shū),網(wǎng)頁(yè)瀏覽器,時(shí)鐘顯示,局域網(wǎng)聊天。整個(gè)系統(tǒng)包括以下文件:圖4-1 工程文件名稱(chēng)圖各個(gè)模塊有獨(dú)立的GUI,界面效果吸引視覺(jué),以下模塊詳細(xì)設(shè)計(jì)。4.1主界面設(shè)計(jì)本系統(tǒng)各模塊由主界
46、面進(jìn)入,以下為模塊框架:多媒體播放器 數(shù)碼相框電子書(shū)音視頻播放器局域網(wǎng)聊天網(wǎng)頁(yè)瀏覽器時(shí)鐘顯示圖4-2 系統(tǒng)模塊框架圖系統(tǒng)主界面在中心添加pictureflow圖片滑動(dòng)效果,每個(gè)圖片為作為一個(gè)模塊的入口。PictureFlow:QwidgetPictureFlowPrivatesetBackgroundColorPictureFlowStatePictureFlowAnimatorSoftwareRendereraddSlidereposition()reset()StartStopinit()paint()reflectionEffect()update()render()renderSlid
47、es()showPreviousshowNext圖4-3 PictureFlow效果實(shí)現(xiàn)相關(guān)類(lèi)及函數(shù)圖以下為主要的類(lèi)和實(shí)現(xiàn)方法:class PictureFlow;此類(lèi)繼承于Qwidget類(lèi),用于創(chuàng)立一個(gè)weidget窗口部件。其中包括:QColor backgroundColor();返回背景顏色;setBackgroundColor(const QColor& c);負(fù)責(zé)設(shè)置背景顏色,默認(rèn)為黑色背景;QSize slideSize() const;返回每張幻燈片(圖片)像素大??;setSlideSize(QSize size); 設(shè)置每張幻燈片(圖片)像素大小;QImage slide(i
48、nt index) const;返回中心索引的圖片;ReflectionEffect reflectionEffect() const;返回倒影效果的值;setReflectionEffect(ReflectionEffect effect);設(shè)置倒影效果;addSlide(const QPixmap& pixmap);在滑動(dòng)區(qū)域添加圖片;void setSlide();設(shè)置滑動(dòng)區(qū)域的圖片;showPrevious();showNext();負(fù)責(zé)圖片向前、向后滑動(dòng)的實(shí)現(xiàn);render();負(fù)責(zé)渲染weidget窗口部件;paintEvent(QPaintEvent *event);負(fù)責(zé)繪畫(huà)圖片
49、和背景;keyPressEvent(QKeyEvent* event);負(fù)責(zé)鍵盤(pán)按鍵觸發(fā)事件;mousePressEvent(QMouseEvent* event);負(fù)責(zé)鼠標(biāo)單擊過(guò)濾事件,前后滑動(dòng);mouseMoveEvent(QMouseEvent *event);負(fù)責(zé)鼠標(biāo)移動(dòng)過(guò)程中的時(shí)間,鼠標(biāo)坐標(biāo)和標(biāo)題跟隨。mouseDoubleClickEvent(QMouseEvent *event);負(fù)責(zé)鼠標(biāo)雙擊過(guò)濾事件,進(jìn)入相應(yīng)模塊。class PictureFlowPrivate;把PictureFlowState, PictureFlowAnimator, PictureFlowSoftwar
50、eRenderer,三個(gè)類(lèi)都放在此類(lèi)中。class PictureFlowState,實(shí)現(xiàn)界面所有滑動(dòng)圖片的必要狀態(tài)信息,其中包括:void reposition(),void reset(),圖片復(fù)位;int slideWidth, slideHeight滑動(dòng)區(qū)域的寬度、高度;reflectionEffect() 圖片倒影效果;int angle,spacing 圖片滑動(dòng)時(shí)的偏移角度和圖片間隔;int centerIndex 中心圖片索引變量等。class PictureFlowAnimator,負(fù)責(zé)移動(dòng)圖片與圖片之間的過(guò)渡,以實(shí)現(xiàn)類(lèi)似Cover Flow 的效果,以改變滑動(dòng)區(qū)域(Cover
51、 Flow 的效果: cover flow是蘋(píng)果ipod首創(chuàng)的將多首歌曲的封面以3D界面的形式顯示出來(lái)的方式。)。其中包括:void start(int slide);負(fù)責(zé)動(dòng)畫(huà)過(guò)渡的開(kāi)始設(shè)置;void stop(int slide); 負(fù)責(zé)動(dòng)畫(huà)過(guò)渡的停止設(shè)置;void update();負(fù)責(zé)動(dòng)畫(huà)過(guò)渡的每一幀更新;QTimer animateTimer;標(biāo)識(shí)動(dòng)畫(huà)時(shí)間的參考參數(shù)。class PictureFlowSoftwareRenderer,動(dòng)畫(huà)軟件三維渲染。其中包括:init(),paint();實(shí)現(xiàn)三維渲染的界面初始化和繪圖;render(),renderSlides();負(fù)責(zé)三維渲染的過(guò)
52、程;4.2播放器模塊設(shè)計(jì)4.2.1 MPlayer在嵌入式開(kāi)發(fā)系統(tǒng)中的應(yīng)用MPlayer是Linux上的電影播放器,它的功能十分強(qiáng)大,能夠播放眾多格式的文件,在X86 PC機(jī)上運(yùn)行很穩(wěn)定,也可以把它移植到非X86CPU上的嵌入式系統(tǒng)中來(lái)。我們就是將MPlayer軟件移植到ARM開(kāi)發(fā)板中,讓MPlayer運(yùn)行在A(yíng)RM核上。MPlayer采用的編解碼器包是libavcodec,這個(gè)編解碼器包可以在多種平臺(tái)上對(duì)H263/MPES/RV10/DivX4/DivX5/MP41/MP42/WMV1編碼格式的視頻流進(jìn)行解碼,它同時(shí)也是完成這些任務(wù)最快的解碼器,MEncoderMPlayer電影解碼器可以生成
53、MPEG(MPEG-PS格式的輸出文件。它們只能用于libavcodec的mpeg1video編解碼器。4.2.2 QT中調(diào)用Mplayer本模塊主要是在播放音視頻文件是創(chuàng)立一個(gè)進(jìn)程Qprocess,此進(jìn)程調(diào)用Mplayer作為后臺(tái)解碼器。EventFilter:QDialogVoid switchPlayState();open();catchOutput();mousePressEvent(QMouseEvent *);mouseMoveEvent(QMouseEvent *);bool startMPlayer();stopMPlayer();pauseMPlayer();paintEv
54、ent(QPaintEvent *);keyPressEvent(QKeyEvent *event);圖4-4 播放器中主要實(shí)現(xiàn)函數(shù)圖在QT中調(diào)用mplayer的方法為:const QString mplayerPath(mplayer ); QStringList args; argsstart(mplayerPath,args);其中mplayerPath(mplayer )為mplayer的路徑,args為進(jìn)程調(diào)用時(shí)的句柄,即是mplayer的參數(shù)。例如: -slave、-quiet等模式對(duì)于在音視頻播放時(shí)要暫停、停止、全屏等操作時(shí)可以調(diào)用以下語(yǔ)句:mplayerProcess-writ
55、e(AAA);其中AAA為mplayer默認(rèn)的快捷鍵參數(shù),例如:p為暫停,q為停止,f為全屏等。在本系統(tǒng)中利用以下方法實(shí)現(xiàn)開(kāi)始,停止、暫停:bool startMPlayer();bool stopMPlayer();bool pauseMPlayer()。bool isplaying;作為音視頻是否播放的標(biāo)識(shí);使用Qprocess的函數(shù)readLine();獲取線(xiàn)程信息,將相關(guān)數(shù)據(jù)放入一個(gè)數(shù)組中:QByteArray buffer(mplayerProcess-readLine();之后獲取文件的播放信息,包括播放的窗口大小,時(shí)間條長(zhǎng)度,當(dāng)前播放的時(shí)間位置。使用open();翻開(kāi)一個(gè)系統(tǒng)文件
56、瀏覽列表,movieFile = QFileDialog:getOpenFileName(this);此處調(diào)用QT內(nèi)部API函數(shù)翻開(kāi)文件。以下為給mplayer進(jìn)程添加檢測(cè)進(jìn)程是否推出狀態(tài)的信號(hào)與槽:connect(mplayerProcess,SIGNAL(finished(int,QProcess:ExitStatus),this, SLOT(mplayerEnded(int, QProcess:ExitStatus);4.2.3 播放器模塊GUI界面設(shè)計(jì)在此模塊界面中設(shè)計(jì)了一個(gè)不規(guī)那么窗體,添加按鈕:播放,暫停,停止,全屏。主要函數(shù)說(shuō)明如下: Qpixmap pix;pix.load(:
57、/images/musicbg.png,0,Qt:AvoidDither|Qt:ThresholdDither|Qt:ThresholdAlphaDither);resize(pix.size();setMask(pix.mask(); 其中pix為不規(guī)那么窗體的背景圖片,此局部為加載一個(gè)png圖片。以下為將加載的圖片繪畫(huà)在窗口中:QPainter painter(this);painter.drawPixmap(0,0,QPixmap(:/images/musicbg.png);此外,在背景圖片上添加相應(yīng)的事件觸發(fā)按鈕,以下以翻開(kāi)按鈕為例:Qimage openimage.load(:/im
58、ages/open.png);給openimage加載圖片;Labelopen = new QLabel( this );建立新的Label;QLabel* Labelopen-setPixmap(QPixmap:fromImage(openimage);把openimage設(shè)置在Label中; Labelopen-setGeometry(QRect(55,115,32,32);設(shè)置Label的坐標(biāo)位置;Labelopen-installEventFilter(this);給Label安裝事件過(guò)濾器。以下為鼠標(biāo)點(diǎn)擊及釋放時(shí)的事件過(guò)濾事件:if(watched = Labelopen)if(ev
59、ent-type() = QEvent:MouseButtonPress) /檢測(cè)鼠標(biāo)點(diǎn)擊事件;QMouseEvent *mouseEvent = (QMouseEvent *)event;if(mouseEvent-buttons() &Qt:LeftButton)/鼠標(biāo)單擊左鍵;QMatrix martix;martix.scale(0.8,0.8); QImage tmp=openimage.transformed(martix);/鼠標(biāo)按下時(shí)的按鈕動(dòng)態(tài)效果;Labelopen-setPixmap (QPixmap:fromImage(tmp); if(event-type() = QE
60、vent:MouseButtonRelease)Labelopen-setPixmap (QPixmap:fromImage(openimage);/鼠標(biāo)釋放后顯示的按鈕圖片; open(); /調(diào)用翻開(kāi)文件的方法return QDialog:eventFilter(watched,event);此外利用同樣方法創(chuàng)立play,pause,fullscreen,stop等按鈕事件過(guò)濾。4.3網(wǎng)頁(yè)瀏覽器模塊設(shè)計(jì)4.3.1 Webkit引擎WebKit 是一個(gè)開(kāi)源瀏覽器網(wǎng)頁(yè)排版引擎,與之相應(yīng)的引擎有GeckoMozilla,F(xiàn)irefox 等使用的排版引擎和Trident也稱(chēng)為MSHTML,IE 使
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 建設(shè)工程項(xiàng)目管理委托合同
- 小型建筑工程合同
- 泰州eps墻體施工方案
- pvc塑膠運(yùn)動(dòng)地板施工方案
- 醫(yī)學(xué)影像學(xué)診斷技能習(xí)題集
- 室外鋼爬梯施工方案
- 除塵器氣包維修施工方案
- 租房酒店改造方案
- 樓頂廣告牌加固施工方案
- 連續(xù)橋梁的施工方案
- 小學(xué)語(yǔ)文學(xué)生學(xué)情分析報(bào)告4篇
- 靜載施工方案
- 六年級(jí)下冊(cè)勞動(dòng)教育《場(chǎng)館服務(wù)我上崗》教學(xué)設(shè)計(jì)
- 大班:戰(zhàn)勝沙塵暴
- 模塊三 Word 2016的應(yīng)用
- 小學(xué)科學(xué)說(shuō)課稿
- 泛光照明技術(shù)標(biāo)準(zhǔn)
- 醫(yī)學(xué)課件尿微量白蛋白
- (7.1.19)-日本園林-以京都龍安寺為例
- 新版GMP解讀(無(wú)菌制劑)-課件
- 傳統(tǒng)服飾專(zhuān)題創(chuàng)新設(shè)計(jì)-山東工藝美術(shù)學(xué)院中國(guó)大學(xué)mooc課后章節(jié)答案期末考試題庫(kù)2023年
評(píng)論
0/150
提交評(píng)論