基于QT的嵌入式終端應用程序開發(fā)_第1頁
基于QT的嵌入式終端應用程序開發(fā)_第2頁
基于QT的嵌入式終端應用程序開發(fā)_第3頁
基于QT的嵌入式終端應用程序開發(fā)_第4頁
基于QT的嵌入式終端應用程序開發(fā)_第5頁
已閱讀5頁,還剩38頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、 本科畢業(yè)論文題目基于QT的嵌入式終端應用程序開發(fā)-記事本和電子相冊開發(fā)姓名李征學號20051401028 專業(yè)計算機科學與技術指導教師王建勇職稱講師中國·武漢二九年六月分類號密級華中農業(yè)大學本科畢業(yè)論文基于QT的嵌入式終端應用程序開發(fā)記事本和電子相冊開發(fā)Embedded terminal application program development basedon QTDevelopment of notepad and electronic album學生姓名:李征學生學號:051401028學生專業(yè):計算機科學與技術指導教師:王建勇講師華中農業(yè)大學理學院二九年六月目錄目錄.

2、I 摘要. II 關鍵詞. II Abstract . III Key Words . III 1 前言. (11.1課題研究背景和意義 (11.2嵌入式軟件技術發(fā)展現(xiàn)狀與未來 (11.3課題研究內容 (32 Linux和Qt簡介 (32.1Linux主要特性 (32.2QT開發(fā)工具簡介 (43 嵌入式終端應用程序之記事本和電子相冊架構設計 (73.1記事本架構設計 (73.2電子相冊架構設計 (124 算法設計和實現(xiàn) (164.1記事本主要算法設計和實現(xiàn) (164.2電子相冊主要算法設計和實現(xiàn) (215 總結和展望 (26參考文獻 (28致謝 (29基于QT的嵌入式終端應用程序開發(fā)記事本和電

3、子相冊開發(fā)摘要越來越多的嵌入式終端需要一個圖形化的人機接口界面(GUI,良好的人機交互界面是嵌入式系統(tǒng)設計的一個關鍵技術,尤其是在嵌入式手持設備中,對嵌入式終端的實用性、美觀性和視聽娛樂性提出了更高的要求。而記事本和電子相冊以其實用性和良好的觀賞性逐漸成為嵌入式設備中不可或缺的組成部分。開發(fā)基于嵌入式終端的界面美觀、功能豐富、交互性好的記事本和電子相冊,具有一定的實用意義和價值。本文的目標是設計和實現(xiàn)嵌入式終端下的記事本和電子相冊。論文首先介紹了Linux的優(yōu)點和Qt開發(fā)環(huán)境的搭建,著重分析了Qt在軟件開發(fā)中的編程機制。并根據嵌入式應用的特點對嵌入式終端下的記事本和電子相冊進行了設計需求分析、

4、具體界面的設計和整體結構的設計。本課題根據記事本和電子相冊的算法,設計并實現(xiàn)了記事本的相關功能(如:新建、打開、編輯和刪除文件等和電子相冊的相關功能(如:圖片放大、縮小、旋轉和移動等。最后對關于論文進一步工作的方向進行了簡要的討論。關鍵詞嵌入式Linux; Qt;圖形用戶界面;記事本;電子相冊Embedded terminal application program development based on QT Development of notepad and electronic albumAbstractMore and more embbeded Embedded Terminal

5、 need graphics user interface(GUI. A good Human-Computer Interaction interface is the key technology of embedded system design. Higher demands of the practicality, aesthetics and audio-visual entertainment of embedded terminal are needed, especially in embbeded system handheld device. Notepad and el

6、ectronic photo album are becoming an integral part of embedded device for their pracicality and good viewing. It has some practical significance and value to develop a notepad and an album with beautiful interface, rich functions and good interaction based on embedded terminal.The aim of this paper

7、is to design and implement a notepad and an album in the embeded terminal environment. This paper presented the advantage of Linux and the building of QT developing environment, focused on the programming mechanism of developing software with Qt. It analysed the needs of the design, designed the spe

8、cific interface and overall structure of notepad and album in the embeded terminal environment according to features of embedded application.This project designed and implemented the relevant functions of norepad(such as new file,open file ,edit file and delete file as well as the relevant functions

9、 of album(such as enlarge 、minify、 rotate and move the picture based on the algorithms of notepad and album. Finally, brief disscusion about the further reaserch of this paper was presented.Key wordsEmbedded Linux;Qt;GUI;notepad;album1前言1.1課題研究背景和意義隨著嵌入式產品的發(fā)展,往往要求嵌入式操作系統(tǒng)有網絡和圖形的功能。利用源代碼開放的Linux搭建的嵌入式

10、操作系統(tǒng),由于強大的網絡功能和低成本,近來得到了越來越多的應用。其能夠提供全功能的桌面計算,定制非常方便并且支持大多數嵌入式系統(tǒng)上使用的芯片,包括Strong ARM,MIPS和Power PC等。在嵌入式Linux操作系統(tǒng)上使用一個功能完備的輕量級、高性能、高可靠、可配置的GUI系統(tǒng)成為可行的解決方案(丁丁,2004。雖然市場上現(xiàn)在已經有了眾多的優(yōu)秀的GUI應用軟件,但隨著近年來計算機技術的迅速發(fā)展,當新硬件、新技術出現(xiàn)時,計算機的體系結構、指令系統(tǒng)和操作系統(tǒng)都可能發(fā)生相應的改變,這勢必會導致一部分應用軟件在新環(huán)境下無法正常運行。如果舍棄原有軟件而重新開發(fā),將會耗費大量的人力和資金,而且浪費

11、了許多成熟的軟件成果。而Qt在源代碼級上實現(xiàn)了跨平臺特性,極大的支持了跨平臺通用軟件的開發(fā)。Qt 可以用同一個源程序在不同平臺上編譯鏈接,生成目標代碼,并取得相同的運行效果,稱為“一次編寫,隨處編譯”,利用這種方法充分實現(xiàn)了程序的跨平臺運行。這種基于源代碼的跨平臺特性不僅解決了性能的問題,而且可以發(fā)揮各個平臺的優(yōu)勢,充分利用每個平臺自身的特點;并且即可以在新環(huán)境下實現(xiàn)原有軟件的功能和特點,減少開發(fā)費用,還可以改進原有軟件的不足,增加新的需求,從而提高軟件的質量,延長軟件生命期。因此,利用Linux下基于Qt的嵌入式終端應用程序開發(fā)是一個非常有意義的課題,具有重要的研究和商業(yè)價值。1.2嵌入式軟

12、件技術發(fā)展現(xiàn)狀與未來全過程自動化產品制造、大范圍電子商務活動、高度協(xié)同科學實驗以及現(xiàn)代化家庭起居,為嵌入式產品造就了嶄新而巨大的商機。除了溝通信息高速公路的交換機、路由器和Modem,構建CIMS所需的DCS和機器人以及規(guī)模較大的家用汽車電子系統(tǒng)。最有量產效益和時代特征的嵌入式產品應數因特網上的信息家電(Internet Appliances,如Web可視電話、Web游戲機、Web PDA(俗稱電子商務、商務通、WAP 電話手機、以及多媒體產品,如STB(電視機頂盒、DVD播放機、電子閱讀機。以信息家電為代表的互聯(lián)網時代嵌入式產品,不僅為嵌入式市場展現(xiàn)了美好前景,注入了新的生命;同時也對嵌入式

13、系統(tǒng)技術,特別是軟件技術提出新的挑戰(zhàn)。這主要包括:支持日趨增長的功能密度、靈活的網絡聯(lián)接、輕便的移動應用和多媒體的信息處理,此外,當然還需對付更加激烈的市場競爭。主要從以下幾個方面體現(xiàn)出來:(1嵌入式應用軟件的開發(fā)需要強大的開發(fā)工具和操作系統(tǒng)的支持隨著因特網技術的成熟、帶寬的提高,ICP和ASP在網上提供的信息內容日趨豐富、應用項目多種多樣。像電話手機、電話座機及電冰箱、微波爐等嵌入式電子設備的功能不再單一,電氣結構也更為復雜。為了滿足應用功能的升級,設計師們一方面采用更強大的嵌入式處理器如32位、64位RISC芯片或信號處理器DSP增強處理能力;同時還采用實時多任務編程技術和交叉開發(fā)工具技術

14、來控制功能復雜性,簡化應用程序設計、保障軟件質量和縮短開發(fā)周期。(2聯(lián)網成為必然趨勢為適應嵌入式分布處理結構和應用上網需求,面向21世紀的嵌入式系統(tǒng)要求配備標準的一種或多種網絡通信接口。針對外部聯(lián)網要求,嵌入設備必需配有通信接口,相應需要TCP/IP協(xié)議簇軟件支持;由于家用電器相互關聯(lián)(如防盜報警,燈光能源控制,影視設備和信息終端交換信息及實驗現(xiàn)場儀器的協(xié)調工作等要求,新一代嵌入式設備還需具備IEEE1394、USB、CAN、Bluetooth或IrDA通信接口,同時也需要提供相應的通信組網協(xié)議軟件和物理層驅動軟件。為了支持應用軟件的特定編程模式,如Web或無線Web編程模式,還需要相應的瀏覽

15、器,如HTML、WML等。(3支持小型電子設備實現(xiàn)小尺寸、微功耗和低成本為滿足這種特性,要求嵌入式產品設計者相應降低處理器的性能,限制內存容量和復用接口芯片。這就相應提高了對嵌入式軟件設計技術要求。如,選用最佳的編程模型和不斷改進算法(孫瓊,2004。(4提供精巧的多媒體人機界面(1日趨流行的行業(yè)性開放系統(tǒng)和備受青睞的自由軟件技術為了對付日趨激烈的國際市場競爭勢態(tài),設計技術共享和軟件重用、構件兼容、維護方便和合作生產是增強行業(yè)性產品競爭能力的有效手段。走行業(yè)開放系統(tǒng)道路是加快嵌入式軟件技術發(fā)展的捷徑之一。國際上自由軟件運動的順利發(fā)展,GPL概念正對嵌入式軟件產業(yè)深遠影響。嵌入式Linux多種原

16、型的提出,和GNU軟件開發(fā)工具軟件的實用化進展,正為我國加快發(fā)展嵌入式軟件技術提供了極好機遇和條件。(2無線網絡操作系統(tǒng)初見端倪未來移動通信網絡不僅能夠提供豐富的多媒體數據業(yè)務,而且能夠支持更多功能和更強的移終端設備。為了有效地發(fā)揮第三代移動通信系統(tǒng)的優(yōu)勢,許多設備廠商針對未來移動設備的特點努力開發(fā)無線網絡操作系統(tǒng)(M. Tim Jones, 2008。(3IP構件庫技術正在造就一個新興的軟件行業(yè)嵌入式系統(tǒng)實現(xiàn)的最高形式是單一芯片系統(tǒng)(SOC,System On Chip,而SOC的核技術是IP核(即知識產權核Intellectual Property Kernels構件。IP核有硬件核、軟件

17、核和固件核,硬件核主要指8/16/32/64位MPU核或DSP核。硬件提供商以數據軟件庫的形式,將其久經驗證的處理器邏輯和芯片版圖數據,供EDA工具調用在芯片上直接配置MPU/DSP功能單元;而軟件核則是軟件提供商將SOC所需的RTOS內核軟件或其它功能軟件,如通信協(xié)議軟件,FAX功能軟件等構件標準API方式和IP核構件形式供IDE和EDA工具調用制成FLASH或ROM可執(zhí)行代碼單元,加速SOC嵌入式系統(tǒng)定制或開發(fā)。目前一些嵌入式軟件供應商紛紛把成熟的RTOS內核和功能擴展件,以軟件IP核構件形式出售,如Microtec的VRTXoc for ARM就是典型例子。正在興啟的IP 構件軟件技術正

18、為一大批高智小型軟件公司提供發(fā)展機遇。1.3課題研究內容針對嵌入式產品的高度個性化,其外觀、與用戶交互的界面千差萬別的特點,故而系統(tǒng)的設計目標是意在打造一個能在嵌入式終端運行、通用的、可以方便的支持各種控件、各種圖形格式,具有體積小、可裁剪、可移植的這樣一個面向嵌入式的應用程序系統(tǒng),使各種嵌入式設備也同樣能具有美觀的用戶界面,相對比較豐富的功能,操作起來簡單而又直觀。本文通過對嵌入式Linux和Qt的分析,在嵌入式Qt的基礎上,開發(fā)了面向嵌入式終端的記事本和電子相冊應用軟件。記事本不僅支持英文輸入和顯示,而且支持中文和日文的顯示,還支持記事本文件的瀏覽、編輯、刪除等功能。電子相冊不僅支持中、英

19、、日文圖片名字的顯示,還支持如放大、縮小、旋轉等各種方式下的圖片瀏覽。它們體積小,移植方便,適用于掌上電腦、智能電話及一些高端的嵌入式設備中。此外它作為一種小型GUI解決方案,可用于那些對GUI大小要求苛刻的各種應用系統(tǒng)中。2Linux和Qt簡介2.1Linux主要特性Linux是個和Unix相似、以Unix核心為基礎、完全內存保護、多任務多進程的操作系統(tǒng)。支持廣發(fā)的計算機硬件,包括X86,Alpha,Sparc,MIPS,PPC,ARM, NEC等現(xiàn)有的大部分芯片。程式源碼全部公開,任何人可以修改并在GNU通用公共許可證(GNU General Public License下發(fā)行(陳英和梁建

20、武,2008,這樣,開發(fā)人員可以對操作系統(tǒng)進行定制,再也不必擔心像MS windows操作系統(tǒng)中"后門"的威脅。同時由于有GPL的控制,大家開發(fā)的東西大都相互兼容,不會走向分裂之路。Linux用戶遇到問題時可以通過Internet向網上成千上萬的Linux開發(fā)者請教,這使最困難的問題也有辦法解決。Linux帶有Unix用戶熟悉的完善的開發(fā)工具,幾乎所有的Unix系統(tǒng)的應用軟件都已移植到了Linux上。Linux還提供了強大的網絡功能,有多種可選擇窗口管理器(X windows。其強大的語言編譯器gcc、g+等也可以很容易得到。不但成熟完善、而且使用方便,為嵌入操作系統(tǒng)提供了

21、一個極有吸引力的選擇。Linux已經被移植到多種硬件平臺,這對受開銷、時間限制的研究與開發(fā)項目是很有吸引力的。原型可以在標準平臺上開發(fā)然后移植到具體的硬件上,加快了軟件與硬件的開發(fā)過程。Linux還有以下優(yōu)點:(1Linux可以隨意地配置,不需要任何的許可證或商家的合作關系。(2它是免費的,源代碼可以得到。這是最吸引人的。毫無疑問,這會節(jié)省大量的開發(fā)費用。(3它本身內置網絡支持。(4Linux的高度模塊化使添加部件非常容易。(5Linux在臺式機上的成功,使大家看到了linux在嵌入式系統(tǒng)中的輝煌前景。嵌入式產品中選擇什么樣的操作系統(tǒng)極為重要,嵌入式Linux由于其開源特性、實時性好、可移植、

22、內置網絡支持等優(yōu)點在嵌入式領域成為主力軍。如今,業(yè)界已經達成共識:即嵌入式linux是大勢所趨,其巨大的市場潛力與醞釀的無限商機必然會吸引眾多的廠商進入這一領域。2.2Qt開發(fā)工具簡介Qt是一個跨平臺的C+圖形用戶界面庫,由挪威TrollTech公司開發(fā),目前包括Qt/X11、基于Framebuffer的Qt/Embedded、快速開發(fā)工具Qt Designer以及國際化工具Qt Linguist等。人們所熟知的Linux下面的KDE環(huán)境就是基于Qt開發(fā)而成的。Qt支持Unix和Linux系統(tǒng)以及Windows系統(tǒng)。Qt的主要特點有:面向對象,很容易擴展,并且允許真正的組件編程; Qt對各個模

23、塊進行了良好的封裝,使各模塊可重用性較好;優(yōu)良的跨平臺特性,使用Qt類編寫的程序可以實現(xiàn)“一次編碼,到處編譯”,極大的降低了跨平臺開發(fā)的難度(丁丁等,2004;構件支持,對于對象間通信,Qt沒有采用函數回調的方法,而是采用了一種全新并且可選的被稱為“信號與槽” 的對象間通信機制,通過一個對象信號的發(fā)射,另一個槽函數的響應,使各個對象之間的通信安全而且高效。Qt的這些特點使它非常適合于真正的構件編程,同時使各個組件之間的協(xié)同工作變得十分簡單,并且Qt 是直接基于Xlib的,不依賴Motif 工具包,所以它的執(zhí)行效率比一般的基于平臺的代碼的執(zhí)行效率要高。(1Qt系統(tǒng)的信號與槽機制簡介信號/槽機制是

24、Qt的一個中心特征并且也許是Qt與其它工具包的最不相同的部分。在圖形用戶界面編程中,我們經常希望一個窗口部件的一個變化被通知給另一個窗口部件(張娟,張雪蘭,2007。更一般地,我們希望任何一類的對象可以和其它對象進行通訊。較老的工具包使用一種被稱作回調的通訊方式來實現(xiàn)同一目的。回調是指一個函數的指針,所以如果你希望一個處理函數通知你一些事件,你可以把另一個函數(回調的指針傳遞給處理函數。處理函數在適當的時候調用回調(倪繼利,2006?;卣{有兩個主要缺點。首先他們不是類型安全的。我們從來都不能確定處理函數使用了正確的參數來調用回調。因此容易造成進程崩潰,另外一個問題是,回調這種方式緊緊的綁定了圖

25、形用戶接口的功能元素,因而很難把開發(fā)進行獨立的分類。Qt的信號與槽機制是不同的。Qt的信號與槽均以函數形式出現(xiàn),Qt的窗口部件有很多預定義的信號,但我們也可以通過繼承來加入我們自己的信號。槽就是一個可以被調用處理特定信號的函數。Qt的窗口部件有很多預定義的槽,但是通常的習慣是你可以加入自己的槽,這樣你就可以處理你所感興趣的信號。我們可以用connect(函數對需要的信號和槽進行連接。當對象的內部狀態(tài)發(fā)生改變,信號就被發(fā)射。從某種意義上講,它們也許對外面的世界感興趣。這就是所有的對象通訊時所做的一切。它不知道也不注意無論有沒有東西接收它所發(fā)射的信號。當一個信號被發(fā)射,它所連接的槽會被立即執(zhí)行,就

26、像一個普通函數調用一樣(見圖1。信號/槽機制完全不依賴于任何一種圖形用戶界面的事件回路。當所有的槽都返回后發(fā)射的信號也將返回。信號與插槽機制并不要求類之間互相知道細節(jié),這樣就可以相對容易的開發(fā)出代碼可高重用的類(Matthias Dalheimer,2002。信號和槽的機制是類型安全的:一個信號的簽名必須與它的接收槽的簽名相匹配。(實際上一個槽的簽名可以比它接收的信號的簽名少,因為它可以忽略額外的簽名。因為簽名是一致的,編譯器就可以幫助我們檢測類型不匹配。它以警告的方式報告類型錯誤,而不會使系統(tǒng)產生崩潰。信號和槽是寬松地聯(lián)系在一起的:一個發(fā)射信號的類不用知道也不用注意哪個槽要接收這個信號(Jo

27、han Thelin,2007。Qt的信號和槽的機制可以保證如果你把一個信號和一個槽連接起來,槽會在正確的時間使用信號的參數而被調用。信號和槽可以使用任何數量、任何類型的參數。它們是完全類型安全的:不會再有回調核心轉儲(core dump。你可以把許多信號和你所希望的單一槽相連,并且一個信號也可以和你所期望的許多槽相連。把一個信號和另一個信號直接相連也是可以的。(這時,只要第一個信號被發(fā)射時,第二個信號立刻就被發(fā)射??傮w來看,信號和槽構成了一個強有力的組件編程機制。如果一個類要使用信號與槽機制,它就必須是從QObject或QObject的子類繼承,而且類的定義必須加上Q_OBJECT宏。sig

28、nals、slots和emit是Qt特有的關鍵字,分別用來表示信號、槽、和發(fā)送信號,移除這些關鍵字和預處理程序,就可以使用標準的C+編譯器。槽同其他函數一樣也具有訪問權限,只是槽的訪問權限決定了誰可以和它相連,如一個public slots:包含了任何信號都可以相連的槽(Andrew Krause,2007 。一個protected slots:包含了只有這個類和它的子類的信號才能連接的槽。這就是說這些槽只是類的實現(xiàn)的一部分,而不是它和外界的接口。一個private slots:包含了只有這個類本身的信號可以連接的槽,甚至它的子類都沒有獲得連接的權利。 圖 1 信號和槽的連接原理圖Fig. 1

29、 Signal and slot connection scheme(2Qt元對象系統(tǒng)Qt中的元對象系統(tǒng)是用來處理對象間通訊的信號/槽機制、運行時的類型信息和動態(tài)屬性系統(tǒng)。它基于下列三類:QObject類、類聲明中的私有段中的Q_OBJECT宏、元對象編譯器(moc。moc讀取C+源文件。如果它發(fā)現(xiàn)其中包含一個或多個類的聲明中含有Q_OBJECT宏,它就會給含有Q_OBJECT宏的類生成另一個含有元對象代碼的C+源文件。這個生成的源文件可以被類的源文件包含(#include到或者和這個類的實現(xiàn)一起編譯和連接。除了提供對象間通訊的信號和槽機制之外(介紹這個系統(tǒng)的主要原因,QObject 中的元對

30、象代碼實現(xiàn)其它特征:(1className(函數在運行的時候以字符串返回類的名稱,不需要C+編譯器中的本地運行類型信息(RTTI的支持。(2inherits(函數返回這個對象是否是一個繼承于QObject繼承樹中一個特定類的類的實例。(3tr(和trUtf8( 兩個函數是用于國際化中的字符串翻譯。(4setProperty(函數和property(函數,這兩個函數是用來通過名稱動態(tài)設置和獲得對象屬性的。(5metaObject(函數返回這個類所關聯(lián)的元對象。雖然使用QObject作為一個基類而不使用Q_OBJECT宏和元對象代碼是可以的,但是如果Q_OBJECT宏沒有被使用,那么這里的信號和槽

31、以及其它特征描述都不會被提供。根據元對象系統(tǒng)的觀點,一個沒有元代碼的QObject的子類和它含有元對象代碼的最近的祖先相同。舉例來說就是,className(將不會返回你的類的實際名稱,返回的是它的這個祖先的名稱。故強烈建議QObject 的所有子類使用Q_OBJECT宏,而不管它們是否實際使用了信號、槽和屬性(Jonathan Corbet, 2005。3嵌入式終端應用程序之記事本和電子相冊架構設計目前市場上嵌入式手持設備,320*240的解析度基本滿足了人們對顯示畫面大小及圖像清晰度的要求,逐漸占領了市場主流。故記事本和電子相冊界面大小設定320*240,并且記事本和電子相冊均支持鍵盤控制

32、操作和點擊(PC機上鼠標點擊,嵌入式設備的觸摸屏點擊控制操作。特色是界面語言支持中文、英文、日文三種語言的顯示。3.1記事本架構設計記事本可以將目錄下的記事本文件以文件名列表的形式顯示出來,并可以實現(xiàn)記事本文件的新建、打開、編輯和刪除等功能;記事本可以根據文件內容的多少來實現(xiàn)文本的滾動顯示,并可以通過軟鍵盤對文本進行編輯等。(1文件列表功能:記事本的文件列表用于顯示記事本文件名,并且當記事本文件名過長時進行文件名長度顯示的控制。當文件數目多于當前界面顯示范圍,則出現(xiàn)上下方向的滾動條,可以向上或向下滾動顯示文件名。(2文件名選中顯示功能:在文件列表上被選中的文件名高亮顯示。(3新建文件功能:新建

33、記事本文件時,提示輸入文件名,如果沒有輸入文件名而選擇直接進入文件編輯界面,系統(tǒng)則提供默認的文件名用于存儲文件。編輯新建文件時,文件名在編輯界面上方顯示。(4控制文本編輯格式功能:編輯文件時,文本內容輸入到當前界面的右端邊界處自動換行,也可以利用鍵盤操作執(zhí)行換行動作。輸入的文本內容多于當前屏幕顯示范圍時出現(xiàn)縱向滾動條,隨著文本輸入滾動顯示內容。保存文件后,文件名立即顯示在文件列表上。(5打開文件功能:根據文件列表選擇打開指定的文件,打開指定文件時,顯示打開文件的文件內容在文件編輯界面上,文件內容過多時可以滾動顯示,并在文件編輯界面的上方滾動顯示打開的文件的文件名。(6文件內容編輯和顯示功能:在

34、文件編輯界面上可以對文件的內容進行編輯和修改。如果文件內容多于當前屏幕顯示范圍的話,出現(xiàn)縱向滾動條,可以滾動顯示當前文件的文件內容。(7打開下一個文件功能:在當前打開文件列表界面,若選擇“打開一個文件”功能,則顯示下一個文件的內容在文件編輯區(qū)。(8文件內容修改提示功能:若在打開的文件中對其內容進行了修改,在關閉文件時將會提示文件的內容已經被修改的消息,用戶可選擇是否保存修改后的內容。(9刪除文件功能:可以在文件列表上對指定文件進行刪除操作,也可以打開文件后,對打開的文件進行刪除操作。選擇刪除文件操作時,會出現(xiàn)確定文件刪除的提示,如果此時放棄刪除操作,則文件不會被刪除,否則文件將會被徹底刪除,即

35、從物理設備上被刪除。文件被刪除后,文件列表上該文件名被移除。(10軟鍵盤輸入功能:軟鍵盤支持英文輸入,Cap鍵支持大小寫英文切換,提供Shift鍵的上下字符切換功能,Enter可以進行回車換行,其ESC鍵執(zhí)行軟鍵盤退出功能。軟鍵盤上的按鍵與物理鍵盤的按鍵位置相對應。(11給用戶提供友好的圖形用戶界面,并合理安排界面元素布局,使其交互性好且方便用戶操作。記事本主要界面設計:(1文件列表界面:如圖2所示,界面大小為320*240。界面上方提供記事本圖標和記事本文字標簽,中間的顯示區(qū)域顯示記事本文件列表。界面的最下方為兩個按鈕,左側的是功能按鈕,右側的是返回按鈕,此界面上分別標記為“Option”和

36、“Exit”。文件列表中文件以文件創(chuàng)建時間排序,將要進行操作的文件名高亮顯示。 圖 2 文件列表界面Fig. 2 File list interface(2新建文件編輯界面:如圖3所示,界面大小為320*240。界面上方顯示記事本圖標和新建文件的文件名,如果沒有輸入文件名則不顯示。中間的顯示區(qū)域為文件編輯區(qū),用于接收文本的輸入。界面的最下方左側為功能按鈕,右側的是返回按鈕,此界面上分別標記為“Option”和“Save”。 圖 3 新建文件編輯界面Fig. 3 New document editing interface(3打開文件內容顯示界面:如圖4所示,界面大小為320*240。界面上方顯

37、示記事本圖標和打開的文件的文件名,中間的顯示區(qū)域為文件內容顯示區(qū),可以接受文本的編輯和修改。界面的最下方左側為功能按鈕,右側的是返回按鈕,此界面上分別標記為“Option”和“Back”。 圖 4 文件打開界面Fig. 4 Documents open interface記事本功能菜單設計:如圖5所示,記事本功能菜單大小要小于記事本主要界面的大小,根據具體條目的數量來調整為合適的大小。菜單上顯示可操作的功能選項,并對選定的功能選項高亮顯示。界面的最下方左側為功能按鈕,右側的是返回按鈕,菜單中分別標記為“Select”和“Back”。 圖 5 功能菜單Fig. 5 Function menu記事

38、本消息提示框設計:如圖6所示,消息提示框界面大小為320*160。消息提示框的顯示區(qū)域顯示提示動畫和提示的內容。界面的最下方左側為功能按鈕,右側的是返回按鈕,此界面中分別標記為“Yes”和“No”。 圖 6 消息提示框Fig. 6 Messagebox相鄰兩個界面之間切換時,若后出現(xiàn)的界面大小小于先出現(xiàn)的界面大小,則第一個界面顯示蒙版即表示為禁用狀態(tài),如圖5和圖6。記事本軟鍵盤界面設計:如圖7所示,軟鍵盤需要對文本編輯區(qū)進行輸入操作,所以軟鍵盤界面盡量要小一些,以免影響了文本編輯區(qū)的使用,但同時也需要保證軟鍵盤上字符的清晰顯示,故軟鍵盤界面大小為設定為320*130。按鍵布局與物理鍵盤基本一致

39、,按鍵布局美觀,同時鍵盤的邊緣相對寬一些,便于鍵盤的移動。 圖 7 軟鍵盤界面Fig . 7 Soft keyboard interface 圖 8 記事本結構圖Fig. 8 Notepad structural diagram如圖8所示,文件列表界面是記事本的入口和出口。記事本通過調用文件列表功能菜單對文件執(zhí)行各種操作。在文件列表功能菜單中根據所選擇的菜單條目進入相應的功能界面,如新建文件編輯界面、文件顯示內容界面或刪除文件提示框界面等。各個界面都有自己的功能菜單,通過調用自己的功能菜單對當前界面進行下一步的操作,如當新建文件界面顯示時,可通過菜單進行打開文件操作和軟鍵盤輸入操作;當打開文件

40、時在文件內容的顯示界面上,可通過菜單進行顯示下一個文件內容的操作和軟鍵盤編輯修改文件內容的操作,并在文件內容修改后,可通過修改文件提示框選擇是否保存修改后的文件內容。3.2電子相冊架構設計電子相冊支持jpg、png、gif、xpm、和bmp格式圖片的瀏覽,并可以對圖片進行放大、縮小或旋轉角度顯示。電子相冊還支持幻燈片模式瀏覽圖片,并可以對圖片進行刪除等操作。(1顯示圖片列表功能:在圖片文件所在目錄讀取所有擴展名為jpg、xpm、png、bmp、gif格式的圖片文件,并將讀取的文件按順序用相同大小的縮略圖的形式顯示在圖片列表界面上。如果圖片數量超過當前屏幕顯示范圍時,可向下滾動顯示。其它格式文件

41、忽略不讀。(2圖片選中顯示功能:在圖片列表中選定某個圖片時,此圖片的縮略圖成凸起放大狀態(tài),表示選中此圖片并將對此圖片進行操作。(3刪除圖片功能:對當前選中的圖片可執(zhí)行刪除操作,選擇刪除后會進行刪除確認提示,若選擇徹底刪除圖片則從物理設備上和圖片列表上將該圖片刪除。(4瀏覽圖片功能:對選中的圖片可以執(zhí)行瀏覽的功能,若圖片原本大小超過圖片瀏覽區(qū)域(即相框的大小,則會自動調整變成適應圖片瀏覽區(qū)域的最大尺寸。若圖片原本大小沒有超過圖片瀏覽區(qū)域大小,則以原始尺寸在圖片瀏覽區(qū)域顯示??蓪Υ蜷_的圖片進行放大、縮小、向左旋轉、向右旋轉、全屏模式與返回原始尺寸等一系列的瀏覽模式操作。(5圖片放大功能:在當前圖片

42、尺寸大小的基礎上,圖片可逐級放大,以尺寸的0.5倍遞增,最大可放大到打開圖片時顯示的初始尺寸的3倍。(6圖片縮小功能:在當前圖片尺寸大小的基礎上,圖片可逐級縮小。最小可縮小到打開圖片時顯示的初始尺寸的0.5倍。(7圖片旋轉功能:打開圖片后,可在圖片的任意狀態(tài)下對圖片進行旋轉操作??稍诋斍盃顟B(tài)下,將圖片向左或向右旋轉,每次旋轉角度差值為90°。圖片旋轉后會自動適應窗口大小,完整顯示圖片。(8圖片移動功能:圖片執(zhí)行放大功能后,圖片可在瀏覽區(qū)域進行移動。(9圖片全屏顯示功能:可以將圖片執(zhí)行全屏顯示。為了支持點擊操作,全屏顯示時不覆蓋相關功能按鈕。(10幻燈片模式自動瀏覽功能:可從當前選定的

43、圖片開始執(zhí)行自動播放圖片功能,初始設定播放速度為3秒間隔,可以加速或減速播放。(11給用戶提供友好的圖形交互界面,并合理安排界面元素布局,使其美觀并且方便用戶操作。電子相冊列表界面設計:如圖9所示,電子相冊圖片列表界面大小設定為320*240。界面的上方顯示當前選中的圖片的名字。中間的顯示區(qū)域以4*3(即4列3排格式對圖片的縮略圖進行排列,被選中的圖片被突出放大顯示。界面的最下方為兩個按鈕,左側的是功能按鈕,右側的是返回按鈕,此界面上分別標記為“Option”和“Exit”。 圖 9 圖片列表界面Fig. 9 Picture list interface電子相冊功能菜單設計:如圖10所示,功能

44、菜單大小以菜單項的多少具體而定,但一定要小于圖片列表界面大小的尺寸。菜單上顯示可操作的功能選項,并對選定的功能選項高亮顯示。界面的最下方為兩個按鈕,左側的是功能按鈕,右側的是返回按鈕,此界面上分別標記為“Select”和“Cancel”。 圖 10 功能菜單Fig. 10 Function menu相鄰兩個界面之間切換時,若后出現(xiàn)的界面大小小于先出現(xiàn)的界面大小,則第一個界面顯示蒙版即表示為禁用狀態(tài),如圖10。電子相冊瀏覽界面設計:電子相冊瀏覽界面上方顯示所顯示圖片的文件名,圖片瀏覽區(qū)顯示具體要求下的圖片狀態(tài),如正常顯示的圖片(圖11、放大的圖片(圖12、縮小的圖片(圖13或旋轉的圖片(圖14等

45、。界面的最下方為兩個按鈕,左側的是功能按鈕,右側的是返回按鈕,此界面上分別標記為“Option”和“Back”。 圖 11 正常顯示圖片瀏覽界面Fig. 11 The normal size picture browsing interface 圖 12 放大圖片瀏覽界面Fig. 12 Enlarged picture browsing interface 圖 13 縮小圖片瀏覽界面Fig. 13 Minified the image brower interface 圖 14圖片旋轉角度瀏覽界面Fig. 14 Image rotation angle browsing interface如圖

46、15所示,圖片列表界面為電子相冊的入口和出口。通過圖片列表功能菜單,可執(zhí)行打開圖片進行瀏覽的功能和刪除圖片的功能,并根據所選擇的功能進入圖片瀏覽界面或顯示刪除文件提示框。進入圖片瀏覽界面可通過圖片瀏覽功能菜單,對當前顯示的圖片執(zhí)行各種操作,從而進入相應的圖片瀏覽界面。放大圖片的顯示,縮小圖片的顯示,旋轉圖片的顯示,圖片全屏的顯示和自動瀏覽圖片的顯示均將顯示在圖片瀏覽界面。而各種模式下的圖片瀏覽界面下,均可以通過功能菜單對其他瀏覽模式進行選擇。 圖 15 電子相冊結構圖Fig. 15 Album structural diagram4算法設計和實現(xiàn)4.1記事本主要算法設計和實現(xiàn) 圖 16 記事本

47、類圖Fig. 16 Notepad class diagram類圖說明:NpNotepadForm為記事本程序的主界面類,即顯示文件列表的類。NpFunctionview Form為功能菜單的基類,也是文件列表功能菜單的實現(xiàn)類。NpNewnoteForm為新建文件的功能實現(xiàn)類。NpOpennoteForm為打開文件的功能實現(xiàn)類。NpDeletenoteForm為刪除文件的功能實現(xiàn)類。NpNewoptionForm為新建文件功能菜單的實現(xiàn)類。NpOpenoptio nForm為打開文件功能菜單的實現(xiàn)類。NpSaveForm為文件名保存實現(xiàn)類。NpMessageb ox為內容修改提示框的功能實現(xiàn)類

48、。MyKey是軟鍵盤上的按鈕的實現(xiàn)類,MyKeyboard 為軟鍵盤功能實現(xiàn)類。MyTextedit是Qt類中QTextEdit類的子類,實現(xiàn)鍵盤響應函數功能的權限升級,即從protected升級為public。NpNotepadForm與NpfunctionviewForm成單項關聯(lián)關系。NpFunctionviewForm分別與NpNewnoteForm、NpOpennoteForm、NpDeletenoteFor m成單向關聯(lián)。NpNewnoteForm與NpNewoptionForm單項關聯(lián)。NpOpennoteForm與NpOpenoptionForm雙向關聯(lián)。NpOpenoptio

49、nForm與NpDeletenoteForm、MyKeyboard分別為單向關聯(lián)。NpNewnoteForm分別與NpOpennoteForm和MyKeyboard單向關聯(lián)。NpOpenoptionForm和NpNewoptionForm繼承于類NpFunctionviewForm。MyKeyboard依賴于MyKey,若MyKey類發(fā)生改變MyKeyboard也將發(fā)生改變。MyTextedit與NpNewnoteForm類和NpOpennoteForm為聚合(聚集關系。NpSaveForm與NpNewnoteForm為聚合(聚集關系。NpMessagebox與NpOpennoteForm是聚

50、合(聚集關系。記事本界面用到的控件主要有QLable、QToolButton、QTextEdit和QListBox等。(1記事本文件列表的實現(xiàn):首先掃描文件夾下的所有文件,包括隱藏的所有文件名,過濾記事本文件,并將這些記事本文件名根據創(chuàng)建時間的先后進行排序存儲到文件鏈表中,將文件鏈表中的所有文件顯示在文件列表界面。流程圖如圖17。(2功能菜單的實現(xiàn):在記事本設計中有3個功能菜單界面,其中打開和新建的功能菜單均繼承自記事本文件列表界面的功能菜單,這三個界面都含有一個QListBox 控件,但是菜單項不同,并根據不同的菜單項實現(xiàn)不同的功能。流程圖如圖18。(3新建文件的實現(xiàn):首先提示輸入文件名,并

51、檢查文件名的合法性。如果文件名不符合要求,則設置文件名的輸入無效,并提示重新輸入。如果不輸入文件名則提供默認的文件名,進入文本編輯界面,然后按照界面的寬度對文本輸入進行限定,到界面寬度最大值時自動換行。并且使文本保存時輸入到物理設備上時支持unicode編碼。流程圖如圖19。 圖 17 顯示文件列表流程圖Fig. 17 File list showing flow diagram 圖 18 功能菜單流程圖Fig. 18 Function menu flow diagram 圖 19 新建文件流程圖Fig. 19 New file flow diagram(4打開文件功能的實現(xiàn):從文件列表選定打

52、開的文件,然后將文件內容讀到QTextStream中再顯示在QTextEdit中,并且規(guī)定顯示格式。如果文件內容被修改后,提示文件是否需要保存。如果通過菜單選擇打開下一個文件,則查找到當前文件的下一個文件,并將其文件內容顯示于界面顯示區(qū)域上。流程圖如圖20。(5軟鍵盤的實現(xiàn):定義按鍵類MyKey繼承自QPushButton,點擊的時候發(fā)射該按鍵的文字。在類MyKeyboard中組合使用MyKey,并將MyKey發(fā)射的信號與接收軟鍵盤輸入的槽進行連接。根據軟鍵盤上邊緣上的點擊的拖動,通過跟蹤移動點的坐標位置,使整個軟鍵盤進行相應距離的移動。流程圖如圖21。 圖 20 打開文件流程圖Fig. 20

53、 Open file flow diagram 圖 21 軟鍵盤流程圖Fig. 21 Soft keyboard flow diagramAlbDelForm AlbPicChooseForm AlbMenuForm AlbPicViewForm AlbPicOptionForm圖 22 電子相冊類圖Fig. 22 Album class diagram類圖說明:電子相冊程序定義了5個類,AlbPicChooseForm為電子相冊圖片列表界面類, AlbMenuForm為電子相冊圖片列表功能菜單類,AlbPicViewForm為圖片瀏覽類, AlbOptionForm為圖片瀏覽界面的功能菜單類

54、,AlbDelForm為圖片刪除類。AlbPicChooseForm和AlbMenuForm成單向關聯(lián)關系。AlbMenuForm和AlbDelForm、AlbPicViewForm分別成單向關聯(lián)關系。AlbPicViewForm和AlbOptionForm成雙向關聯(lián)關系。其中,對圖片的各種處理均在AlbPicViewForm類中實現(xiàn),如放大、縮小、逆時針旋轉、順時針旋轉、全屏顯示、圖片移動顯示等。(1用戶進入電子相冊后,首先顯示圖片列表。圖片列表由12個Label組成,將從當前目錄下掃描jpg、xpm、png、gif、bmp格式的圖片并將其名稱存入鏈表中,通過load函數加載圖片到一個QIm

55、age類型的變量中,然后將此變量與Label關聯(lián)起來,以實現(xiàn)圖片在Label上的顯示。值得注意的一點是,此Label上加載的圖片均為真實圖片的縮略圖,而不是圖片本身。如果圖片的縮略圖已經存在,則將縮略圖直接顯示在Label上,如果縮略圖不存在,則生成圖片的縮略圖。如果該圖片文件為非法圖片格式文件,則在該Label上載入一個標志著讀取圖片文件失敗的圖片??s略圖是圖片的真實縮影,在縮小時保持原圖片的比例。流程圖如圖23。(2圖片選中狀態(tài)功能實現(xiàn):首先設定圖片選中狀態(tài)的表示方式,即縮略圖圖片的尺寸放大,滿足縮略圖寬為80像素或高為60像素中任一條件,保持圖片的寬高比例與原圖片寬高比例相同,選中狀態(tài)下

56、的圖片縮略圖在圖片列表界面上凸起顯示。如果圖片是標志為格式不正確的圖片,則該圖片被選中或離開選中狀態(tài)時不做放大縮小動作以示與正常圖片的區(qū)別。且根據不同的按鍵按下,進行不同位置圖片的選中。主要實現(xiàn)流程圖如圖24所示。 圖 23 圖片列表顯示流程圖Fig. 23 Picture list flow diagram 圖 24 選擇圖片流程圖Fig. 24 Picture selecting flow diagram(3刪除圖片功能實現(xiàn):在圖片列表界面上對選中圖片要進行刪除操作時,需注意兩點,一點就是待刪除的圖片是否是圖片列表的最后一張圖片,若是的話,則刪除圖片后,被刪除圖片的前一張圖片呈選中狀態(tài)。否則,刪除圖片后,被刪除圖片的后一張顯示為選中狀態(tài),且此圖片刪除后,圖片文件鏈表中刪除圖

溫馨提示

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

評論

0/150

提交評論