【正文】
Y e s顯示菜單保存文件接受文本編輯保存文件到當(dāng)前目錄下圖 19 新建文件流程圖Fig. 19 New file flow diagram(4) 打開文件功能的實(shí)現(xiàn):從文件列表選定打開的文件,然后將文件內(nèi)容讀到QTextStream 中再顯示在 QTextEdit 中,并且規(guī)定顯示格式。如果通過菜單選擇打開下一個(gè)文件,則查找到當(dāng)前文件的下一個(gè)文件,并將其文件內(nèi)容顯示于界面顯示區(qū)域上。(5) 軟鍵盤的實(shí)現(xiàn): 定義按鍵類 MyKey 繼承自 QPushButton,點(diǎn)擊的時(shí)候發(fā)射該按鍵的文字。根據(jù)軟鍵盤上邊緣上的點(diǎn)擊的拖動(dòng),通過跟蹤移動(dòng)點(diǎn)的坐標(biāo)位置,使整個(gè)軟鍵盤進(jìn)行相應(yīng)距離的移動(dòng)。開始結(jié)束設(shè)定文本自動(dòng)換行位置設(shè)定文本自動(dòng)換行方式選定待打開的文件N o執(zhí)行菜單功能選擇退出文件還是顯示功能菜單 ?顯示菜單退出文件接受文本編輯退出文件打開文件并顯示文件內(nèi)容文件內(nèi)容是否被修改 ?是否保存修改后的文件內(nèi)容 ?Y e s保存文件內(nèi)容Y e sN o圖 20 打開文件流程圖Fig. 20 Open file flow diagram開始結(jié)束載入軟鍵盤上各按鍵顯示字符軟鍵盤按鍵布局定義軟鍵盤按鍵 M y K e y隨點(diǎn)擊動(dòng)作移動(dòng)而移動(dòng)鍵盤在界面上的位置點(diǎn)擊的是按鍵還是鍵盤邊緣 ?鍵盤邊緣按鍵設(shè)置點(diǎn)擊事件過濾器S w i t c h ( 按鍵字符 )N o按鍵上字符轉(zhuǎn)為為小寫字符設(shè)定 C a p 鍵切換狀態(tài) 光標(biāo)位置處文本換行 設(shè)定 S h i f t 鍵切換狀態(tài) 刪除光標(biāo)左側(cè)字符按鍵上字符是大寫還是小寫 ?按鍵上字符轉(zhuǎn)為大寫字符按鍵上字符顯示為普通字符按鍵上字符顯示為上字符向文本編輯區(qū)輸入字符 軟鍵盤界面退出數(shù)字E S C字母C a pE n t e r B a c k S p a c eS h i f t按鍵上字符是否是上字符 ?大寫小寫Y e s圖 21 軟鍵盤流程圖Fig. 21 Soft keyboard flow diagram 電子相冊(cè)主要算法設(shè)計(jì)和實(shí)現(xiàn) 電子相冊(cè)類結(jié)構(gòu)設(shè)計(jì)A l b D e l F o r mA l b P i c C h o o s e F o r mA l b M e n u F o r mA l b P i c V i e w F o r mA l b P i c O p t i o n F o r m圖 22 電子相冊(cè)類圖 Fig. 22 Album class diagram類圖說明:電子相冊(cè)程序定義了 5 個(gè)類,AlbPicChooseForm 為電子相冊(cè)圖片列表界面類,AlbMenuForm 為電子相冊(cè)圖片列表功能菜單類,AlbPicViewForm 為圖片瀏覽類,AlbOptionForm 為圖片瀏覽界面的功能菜單類,AlbDelForm 為圖片刪除類。AlbMenuForm 和 AlbDelForm、AlbPicViewForm 分別成單向關(guān)聯(lián)關(guān)系。其中,對(duì)圖片的各種處理均在 AlbPicViewForm 類中實(shí)現(xiàn),如放大、縮小、逆時(shí)針旋轉(zhuǎn)、順時(shí)針旋轉(zhuǎn)、全屏顯示、圖片移動(dòng)顯示等。圖片列表由 12 個(gè) Label 組成,將從當(dāng)前目錄下掃描 jpg、xpm、png、gif、bmp 格式的圖片并將其名稱存入鏈表中,通過 load 函數(shù)加載圖片到一個(gè) QImage 類型的變量中,然后將此變量與 Label 關(guān)聯(lián)起來,以實(shí)現(xiàn)圖片在 Label 上的顯示。如果圖片的縮略圖已經(jīng)存在,則將縮略圖直接顯示在Label 上,如果縮略圖不存在,則生成圖片的縮略圖??s略圖是圖片的真實(shí)縮影,在縮小時(shí)保持原圖片的比例。(2) 圖片選中狀態(tài)功能實(shí)現(xiàn):首先設(shè)定圖片選中狀態(tài)的表示方式,即縮略圖圖片的尺寸放大,滿足縮略圖寬為 80 像素或高為 60 像素中任一條件,保持圖片的寬高比例與原圖片寬高比例相同,選中狀態(tài)下的圖片縮略圖在圖片列表界面上凸起顯示。且根據(jù)不同的按鍵按下,進(jìn)行不同位置圖片的選中。開始將所有圖片文件名存入鏈表結(jié)束是否有j p g 、 x p m 、 p n g 、 g i f 、 b m p格式圖片Y e sN o建立文件列表迭代器 i t掃描文件目錄下所有文件包括隱藏文件設(shè)定圖片列表顯示界面格式 ( 4 * 3 )f o r ( i = 0 。 i + + )圖片文件是否是i t 中最后一個(gè)文件循環(huán)結(jié)束顯示加載圖片的第 i 個(gè) L a b e l設(shè)置第 i 個(gè) L a b e l 隱藏Y e sN o是否存在迭代器中圖片的縮略圖N oY e s加載圖片縮略圖到第 i 個(gè) L a b e l根據(jù)文件頭判定是否是正確的圖片格式N o設(shè)定此圖片縮略圖為名為 “ 錯(cuò)誤標(biāo)志圖片 ” 的圖片根據(jù)原始圖片比例設(shè)定縮略圖大小生成圖片縮略圖Y e s圖 23 圖片列表顯示流程圖Fig. 23 Picture list flow diagram開始結(jié)束s w i t c h ( 按鍵 )設(shè)定選中圖片的狀態(tài)及默認(rèn)選中圖片圖片列表圖片整體向上滾動(dòng)一排 , 呈選中狀態(tài)的圖片改變當(dāng)前圖片是否是界面上最后一排 ?左方向鍵下方向鍵圖片鏈表中當(dāng)前圖片位置 1 上 , 是否有圖片存在 ?圖片鏈表中當(dāng)前圖片位置 + 4 上 , 是否有圖片存在 ?Y e sY e s呈選中狀態(tài)的圖片為下一排的同一列圖片N oN o當(dāng)前圖片的前一張圖片呈選中狀態(tài)右方向鍵圖片鏈表中當(dāng)前圖片位置 + 1 上 , 是否有圖片存在 ?當(dāng)前圖片的后一張圖片呈選中狀態(tài)圖片列表圖片整體向下滾動(dòng)一排 , 呈選中狀態(tài)的圖片改變當(dāng)前圖片是否是界面上最上一排 ?下方向鍵圖片鏈表中當(dāng)前圖片位置 4 上 , 是否有圖片存在 ?Y e sY e s呈選中狀態(tài)的圖片為上一排的同一列圖片N o圖 24 選擇圖片流程圖Fig. 24 Picture selecting flow diagram(3) 刪除圖片功能實(shí)現(xiàn):在圖片列表界面上對(duì)選中圖片要進(jìn)行刪除操作時(shí),需注意兩點(diǎn),一點(diǎn)就是待刪除的圖片是否是圖片列表的最后一張圖片,若是的話,則刪除圖片后,被刪除圖片的前一張圖片呈選中狀態(tài)。流程圖如圖 25。功能實(shí)現(xiàn)流程圖如圖 26。縮小圖片時(shí)要保證縮小后的圖片依然居于相框開始改變 m d _ C h a n g e S i z e 的值結(jié)束m d _ C h a n g e S i z e 等于 0 . 5N oY e sm d _ C h a n g e S i z e 等于 0 . 5改變菜單條目狀態(tài)邊界調(diào)整 , 修正 m i _ M o v e X 與m i _ M o v e Y 的值調(diào)用 S c a l e ( ) 函數(shù)得出新的 p i x m a p調(diào)用 r e p a i n t ( ) 函數(shù)畫出新的 p i x m a pY e sN o圖 27 圖片縮小功能實(shí)現(xiàn)Fig. 27 Implementation of minifing function diagram中間位置。實(shí)現(xiàn)流程圖如圖 27。圖片在全屏模式下選擇放大時(shí)圖片也可以進(jìn)行上下或左右移動(dòng)顯示。實(shí)現(xiàn)流程圖如圖 28。對(duì)于圖片的顯示需要考慮的情況有是否是全屏模式,當(dāng)前的縮放倍數(shù)和當(dāng)前的旋轉(zhuǎn)角度,并需要根據(jù)判斷圖片是否移動(dòng)來對(duì)顯示邊界進(jìn)行檢測(cè)及計(jì)算。最后將圖片繪制在相框內(nèi),即當(dāng)前的圖片瀏覽區(qū)內(nèi)。開始以圖片原始大小顯示 , 圖片的像素寬高參數(shù) m i _ W i d t h S i z e 和m i _ H e i g h t S i z e 為原始圖片寬高值結(jié)束是否圖片比相框小N oY e s讀取圖片縮放參數(shù) m i _ C h a n g e S i z e , 把它與 m i _ W i d t h S i z e 、 m i _ H e i g h t S i z e相乘 , 把結(jié)果分別與原始圖片的寬高相除 , 得出縮放倍數(shù)讀取旋轉(zhuǎn)角度參數(shù) m i _ A n g l e將原始圖片按計(jì)算出的縮放比例縮放 , 并按 m i _ A n g l e 中的角度旋轉(zhuǎn)調(diào)用 r e p a i n t ( ) 函數(shù)將m Q P _ P i x m a p S c a l e d 在相框中顯示讀取用戶操作 , 改變對(duì)應(yīng)參數(shù)比較圖片大小與相框大小調(diào)整顯示圖片的像素寬高參數(shù)m i _ W i d t h S i z e 和 m i _ H e i g h t S i z e使之可以按原始比例大小在相框中最大化顯示將得到的圖片保存在m Q P _ P i x m a p S c a l e d 中圖 29 圖片顯示功能實(shí)現(xiàn)流程圖Fig. 29 Implementation of showing function diagram4 總結(jié)和展望本文圍繞用戶的基本需求,提出了一個(gè)基于嵌入式 Linux 操作系統(tǒng)和圖形用戶界面 QT 的嵌入式終端記事本和電子相冊(cè)設(shè)計(jì)方案。電子相冊(cè)和記事本均可支持中、英、日文三種語(yǔ)言界面。記事本對(duì)文件新建、打開、刪除、提示保存等功能已經(jīng)基本完善。并且記事本和電子相冊(cè)設(shè)計(jì)中均采用了模塊化的設(shè)計(jì)思想,便于以后的功能擴(kuò)展。由于時(shí)間關(guān)系,本文僅實(shí)現(xiàn)了記事本和電子相冊(cè)的基本功能。還需要更多拓展功能的支持,才能使開發(fā)出的軟件經(jīng)受住市場(chǎng)的考驗(yàn),使其在眾多嵌入式終端應(yīng)用軟件開發(fā)中具有競(jìng)爭(zhēng)力。 總體來說,本文所設(shè)計(jì)的記事本和電子相冊(cè)可以應(yīng)用到多種場(chǎng)合:公用多媒體終端、手機(jī)、PDA 等小型或手持型嵌入式設(shè)備。參考文獻(xiàn)1. 陳英,梁建武.Linux 基礎(chǔ)及應(yīng)用教程.水利水電出版社,2022,29-422. 丁丁,習(xí)勇,2022.(9):73 一 743. 丁林松,黃麗琴.Qt4 圖形設(shè)計(jì)與嵌入式開發(fā).人民郵電出版社,2022,45-694. 金西, Linux ,2022,20(7):5-65. 劉崢嶸.嵌入式 Linux 應(yīng)用開發(fā)詳解.機(jī)械工業(yè)出版社,2022,53-686. 林銳,韓永泉.高質(zhì)量程序設(shè)計(jì)指南:C++、C 語(yǔ)言.電子工業(yè)出版社,2022,124-1557. 倪繼利.Qt 以及 linux 操作系統(tǒng)窗口設(shè)計(jì).電子工業(yè)出版社,2022,45-1528. 錢能.C++程序設(shè)計(jì)教程.清華大學(xué)出版社,2022,56-889. 任善全,呂強(qiáng),錢培德等.一個(gè)基于 QtEmbedded 的嵌入式 Linux 應(yīng)用程序的實(shí)現(xiàn),計(jì)算機(jī)應(yīng)用與軟件,2022,210. 孫瓊.嵌入式 Linux 應(yīng)用程序開發(fā)詳解,北京: 人民郵電出版社,202211. 譚浩強(qiáng).C++面向?qū)ο蟪绦蛟O(shè)計(jì).清華大學(xué)出版社,2022,89-10012. 王子強(qiáng),劉海燕, 下圖形用戶界面程序的開發(fā)與實(shí)現(xiàn),計(jì)算機(jī)應(yīng)用與軟件,202213. 謝春,陶燁, Linux 系統(tǒng)的多進(jìn)程圖形用戶界面 GUI 控制計(jì)算機(jī),2022,5:28-2914. 衰野,王宏遠(yuǎn).一種嵌入式系統(tǒng)中 GUI 的設(shè)計(jì).計(jì)算機(jī)與數(shù)字工程,2022,34:10310515. 張娟,張雪蘭.基于嵌入式的 GUI 應(yīng)用程序的實(shí)現(xiàn).計(jì)算機(jī)應(yīng)用,2022,23:115一 11716. Linux : 清華大學(xué)出版社,17. M. Tim Jones GNU/Linux Application Programming (Programming Series) Charles River Media 1 edition April 3, 2022,276-28918. Steve mcconnell Code Complete: A Practical Handbook of Software Construction Microsoft Press 2nd edition July 7 2022,234-24519. Jonathan Corbet,Alessandro Rubini,Greg Koah Device 2005致 謝首先,我要對(duì)我的導(dǎo)師王建勇老師表示衷心的感謝。在王老師這里,我不但獲得了豐富的專業(yè)知識(shí)和研究方法,還從他身上學(xué)到了嚴(yán)謹(jǐn)?shù)闹螌W(xué)態(tài)度和精益求精的處事風(fēng)格,使我終生受益。感謝所有教過我的大學(xué)老師,他們給我的關(guān)懷和幫助,我將永遠(yuǎn)銘記于心。感謝我的同學(xué),他們給予我的幫助和情誼是我一生的寶藏