【正文】
感謝我的母校,給了我一個(gè)濃厚的學(xué)習(xí)氛圍,同時(shí)給了我們豐富的實(shí)驗(yàn)資源和圖書(shū)資源。欽佩他們不僅是淵博的知識(shí),還有高尚的道德情操,祝我所有的老師永遠(yuǎn)平安健康快樂(lè)。感謝我的班主任倪福川老師,四年來(lái)一直默默的為我們的班級(jí)導(dǎo)航,將對(duì)未來(lái)充滿(mǎn)懵懂的我們,慢慢引入各自的發(fā)展領(lǐng)域中,無(wú)論從生活上還是學(xué)習(xí)上都給了我們無(wú)微不至的關(guān)心和指導(dǎo)。在我的大學(xué)學(xué)習(xí)生活中和本次畢業(yè)設(shè)計(jì)中,王老師給予我的鼓勵(lì)和耐心指導(dǎo),為我順利完成課題奠定了堅(jiān)實(shí)的基礎(chǔ),并且給了我面對(duì)困難和解決困難的勇氣。s Voice in Open Sour華中農(nóng)業(yè)大學(xué)本科畢業(yè)論文(或設(shè)計(jì))37ce) Apress 2nd edition August 3, 2022,256-26722. Matthias Dalheimer Programming with Qt O39。正是由于這些應(yīng)用需求,促成了本次開(kāi)發(fā)的設(shè)計(jì)和實(shí)現(xiàn)。我們需要做的事情還有很多,例如記事本的界面的整體美化,軟鍵盤(pán)的中文輸入法,記事本提醒功能等;電子相冊(cè)的界面的列表模式切換,如縮略圖列表、文件名列表等的切換,和電子相冊(cè)瀏覽圖片時(shí)的切換效果等。在記事本和電子相冊(cè)的設(shè)計(jì)中,還存在著許多的不足之處。記事本和電子相冊(cè)軟件經(jīng)過(guò)反復(fù)修改驗(yàn)證,通過(guò)了單體測(cè)試和結(jié)合測(cè)試,均能正常且高效的工作,達(dá)到了預(yù)期的目標(biāo)。電子相冊(cè)的各種模式(如放大、縮小、順時(shí)針旋轉(zhuǎn)、逆時(shí)針旋轉(zhuǎn)、全屏顯示、自動(dòng)播放)下的圖片瀏覽及圖片的刪除等功能也在電子相冊(cè)軟件中得到充分的體現(xiàn)。記事本和電子相冊(cè)的界面切換中均使用到了蒙版效果,達(dá)到視覺(jué)上的美化效果,是設(shè)計(jì)上的一個(gè)特色。該設(shè)計(jì)方案具有低耦合、高內(nèi)聚、可擴(kuò)展、可移植等良好特點(diǎn),并在設(shè)計(jì)的基礎(chǔ)上將該方案實(shí)現(xiàn)。圖 29 即為圖片顯示功能實(shí)現(xiàn)的流程圖。根據(jù)圖片縮放和旋轉(zhuǎn)參數(shù)和檢測(cè)到的移動(dòng)距離,利用矩陣計(jì)算出新圖片所需的各個(gè)參數(shù),根據(jù)這些參數(shù)生成顯示在相框內(nèi)的圖片。華中農(nóng)業(yè)大學(xué)本科畢業(yè)論文(或設(shè)計(jì))33開(kāi)始取得當(dāng)前鼠標(biāo)坐標(biāo)位置并根據(jù)舊的鼠標(biāo)坐標(biāo)位置 m i _ O l d X 、 m i _ O l d Y計(jì)算得出坐標(biāo)移動(dòng)參數(shù) m i _ N e w X 、m i _ N e w Y結(jié)束m d _ C h a n g e S i z e 小于等于 1 . 0N oY e s邊界調(diào)整 , 修正 m i _ M o v e X 與m i _ M o v e Y 的值記錄下當(dāng)前的鼠標(biāo)坐標(biāo) m i _ O l d X 、m i _ O l d Y調(diào)用 r e p a i n t ( ) 函數(shù)畫(huà)出新的 p i x m a p根據(jù) m i _ N e w X 、 m i _ N e w Y 更新m i _ M o v e X 、 m i _ M o v e Y圖 28 圖片移動(dòng)功能實(shí)現(xiàn)流程圖Fig. 28 Implementation of moving function diagram (7) 相框內(nèi)圖片顯示功能的實(shí)現(xiàn):不同的選擇下,相框內(nèi)的圖片顯示狀態(tài)是不同的。為保證在移動(dòng)時(shí)正確顯示在相框內(nèi)的圖片視區(qū),需要將圖片在每次移動(dòng)時(shí)進(jìn)行重畫(huà),并計(jì)算圖片位置的移動(dòng)距離。(6) 圖片移動(dòng)功能實(shí)現(xiàn):圖片在放大到 倍以上時(shí),可進(jìn)行圖片在相框內(nèi)的上下或左右移動(dòng)顯示。在圖片非全屏模式和全屏模式兩種情況下,判定當(dāng)前狀態(tài)的圖片與初始時(shí)顯示的位置移動(dòng)的距離大小,并根據(jù)不同的圖片旋轉(zhuǎn)角度,據(jù)此距離大小計(jì)算并設(shè)定相應(yīng)的圖片在相框中的位置坐標(biāo)。開(kāi)始結(jié)束m d _ C h a n g e S i z e 等于 3N oY e sm d _ C h a n g e S i z e 等于 0 . 5改變菜單條目狀態(tài)調(diào)用 S c a l e ( ) 函數(shù)得出新的 p i x m a p調(diào)用 r e p a i n t ( ) 函數(shù)畫(huà)出新的 p i x m a pY e sN o圖 26 圖片的放大功能實(shí)現(xiàn)流程圖Fig. 26 Implementation of enlarging function diagram(5) 圖片縮小功能的實(shí)現(xiàn):可在圖片的任意大小狀態(tài)下進(jìn)行縮小,直到圖片縮小到初始打開(kāi)圖片顯示尺寸的 倍大小。華中農(nóng)業(yè)大學(xué)本科畢業(yè)論文(或設(shè)計(jì))31開(kāi)始刪除目錄下圖片 ,并刪除鏈表中圖片名結(jié)束圖片是否是圖片鏈表中的最后一張圖片N o設(shè)定選中當(dāng)前圖片鏈表中的最后一張圖片選擇待刪除圖片Y e s設(shè)定選中當(dāng)前圖片鏈表中的后一張圖片刪除目錄下圖片 ,并刪除鏈表中圖片名調(diào)整圖片列表界面圖片顯示圖 25 刪除圖片功能實(shí)現(xiàn)流程圖Fig. 25 implmentation of deleting function diagram(4) 圖片的放大功能的實(shí)現(xiàn):設(shè)定 md_ChangeSize 來(lái)記錄放大的倍數(shù),并且當(dāng)放大到最大倍數(shù)時(shí),將菜單項(xiàng)上的“放大” 改成相應(yīng)的提示菜單條 “已經(jīng)達(dá)到最大,并且根據(jù)放大倍數(shù)在瀏覽區(qū)域的相框上繪制圖片。否則,刪除圖片后,被刪除圖片的后一張顯示為選中狀態(tài),且此圖片刪除后,圖片文件鏈表中刪除圖片節(jié)點(diǎn),其列表界面中圖片的位置要統(tǒng)一向前移動(dòng)一個(gè)位置。 i 1 2 。主要實(shí)現(xiàn)流程圖如圖 24 所示。如果圖片是標(biāo)志為格式不正確的圖片,則該圖片被選中或離開(kāi)選中狀態(tài)時(shí)不做放大縮小動(dòng)作以示與正常圖片的區(qū)別。流程圖如圖 23。如果該圖片文件為非法圖片格式文件,則在該 Label 上載入一個(gè)標(biāo)志著讀取圖片文件失敗的圖片。值得注意的一點(diǎn)是,此Label 上加載的圖片均為真實(shí)圖片的縮略圖,而不是圖片本身。 電子相冊(cè)功能實(shí)現(xiàn)(1) 用戶(hù)進(jìn)入電子相冊(cè)后,首先顯示圖片列表。AlbPicViewForm 和 AlbOptionForm 成雙向關(guān)聯(lián)關(guān)系。AlbPicChooseForm 和 AlbMenuForm 成單向關(guān)聯(lián)關(guān)系。流程圖如圖21。在類(lèi) MyKeyboard 中組合使用 MyKey,并將 MyKey 發(fā)射的信號(hào)與接收軟鍵盤(pán)輸入的槽進(jìn)行連接。流程圖如圖 20。如果文件內(nèi)容被修改后,提示文件是否需要保存。流程圖如圖 19。如果不輸入文件名則提供默認(rèn)的文件名,進(jìn)入文本編輯界面,然后按照界面的寬度對(duì)文本輸入進(jìn)行限定,到界面寬度最大值時(shí)自動(dòng)換行。(3) 新建文件的實(shí)現(xiàn):首先提示輸入文件名,并檢查文件名的合法性。(2) 功能菜單的實(shí)現(xiàn):在記事本設(shè)計(jì)中有 3 個(gè)功能菜單界面,其中打開(kāi)和新建的功能菜單均繼承自記事本文件列表界面的功能菜單,這三個(gè)界面都含有一個(gè) QListBox 控件,但是菜單項(xiàng)不同,并根據(jù)不同的菜單項(xiàng)實(shí)現(xiàn)不同的功能。(1) 記事本文件列表的實(shí)現(xiàn):首先掃描文件夾下的所有文件,包括隱藏的所有文件名,過(guò)濾記事本文件,并將這些記事本文件名根據(jù)創(chuàng)建時(shí)間的先后進(jìn)行排序存儲(chǔ)到文件鏈表中,將文件鏈表中的所有文件顯示在文件列表界面。NpMessagebox 與 NpOpennoteForm 是聚合(聚集)關(guān)系。MyTextedit 與 NpNewnoteForm 類(lèi)和 NpOpennoteForm 為聚合(聚集)關(guān)系。NpOpenoptionForm 和 NpNewoptionForm 繼承于類(lèi) NpFunctionviewForm。NpOpenoptionForm 與 NpDeletenoteForm、MyKeyboard 分別為單向關(guān)聯(lián)。 華中農(nóng)業(yè)大學(xué)本科畢業(yè)論文(或設(shè)計(jì))21NpNewnoteForm 與 NpNewoptionForm 單項(xiàng)關(guān)聯(lián)。NpNotepadForm 與 NpfunctionviewForm 成單項(xiàng)關(guān)聯(lián)關(guān)系。MyKey 是軟鍵盤(pán)上的按鈕的實(shí)現(xiàn)類(lèi),MyKeyboard 為軟鍵盤(pán)功能實(shí)現(xiàn)類(lèi)。 NpSaveForm 為文件名保存實(shí)現(xiàn)類(lèi)。NpNewoptionForm 為新建文件功能菜單的實(shí)現(xiàn)類(lèi)。NpOpennoteForm 為打開(kāi)文件的功能實(shí)現(xiàn)類(lèi)。NpFunctionviewForm 為功能菜單的基類(lèi),也是文件列表功能菜單的實(shí)現(xiàn)類(lèi)。而各種模式下的圖片瀏覽界面下,均可以通過(guò)功能菜單對(duì)其他瀏覽模式進(jìn)行選擇。進(jìn)入圖片瀏覽界面可通過(guò)圖片瀏覽功能菜單,對(duì)當(dāng)前顯示的圖片執(zhí)行各種操作,從而進(jìn)入相應(yīng)的圖片瀏覽界面。圖 11 正常顯示圖片瀏覽界面Fig. 11 The normal size picture browsing interface華中農(nóng)業(yè)大學(xué)本科畢業(yè)論文(或設(shè)計(jì))18圖 12 放大圖片瀏覽界面Fig. 12 Enlarged picture browsing interface圖 13 縮小圖片瀏覽界面Fig. 13 Minified the image brower interface華中農(nóng)業(yè)大學(xué)本科畢業(yè)論文(或設(shè)計(jì))19圖 14 圖片旋轉(zhuǎn)角度瀏覽界面Fig. 14 Image rotation angle browsing interface 電子相冊(cè)結(jié)構(gòu)設(shè)計(jì)如圖 15 所示,圖片列表界面為電子相冊(cè)的入口和出口。電子相冊(cè)瀏覽界面設(shè)計(jì):電子相冊(cè)瀏覽界面上方顯示所顯示圖片的文件名,圖片瀏覽區(qū)顯示具體要求下的圖片狀態(tài),如正常顯示的圖片(圖 11) 、放大的圖片(圖 12) 、縮小的圖片(圖 13)或旋轉(zhuǎn)的圖片(圖 14)等。界面的最下方為兩個(gè)按鈕,左側(cè)的是功能按鈕,右側(cè)的是返回按鈕,此界面上分別標(biāo)記為“Select” 和“Cancel” 。圖 9 圖片列表界面Fig. 9 Picture list interface電子相冊(cè)功能菜單設(shè)計(jì):如圖 10 所示,功能菜單大小以菜單項(xiàng)的多少具體而定,但一定要小于圖片列表界面大小的尺寸。中間的顯示區(qū)域以 4*3(即 4 列 3 排)格式對(duì)圖片的縮略圖進(jìn)行排列,被選中的圖片被突出放大顯示。 電子相冊(cè)界面設(shè)計(jì)電子相冊(cè)列表界面設(shè)計(jì):如圖 9 所示,電子相冊(cè)圖片列表界面大小設(shè)定為 320*240。(10) 幻燈片模式自動(dòng)瀏覽功能:可從當(dāng)前選定的圖片開(kāi)始執(zhí)行自動(dòng)播放圖片功能,初始設(shè)定播放速度為 3 秒間隔,可以加速或減速播放。(9) 圖片全屏顯示功能:可以將圖片執(zhí)行全屏顯示。圖片旋轉(zhuǎn)后會(huì)自動(dòng)適應(yīng)窗口大小,完整顯示圖片。(7) 圖片旋轉(zhuǎn)功能:打開(kāi)圖片后,可在圖片的任意狀態(tài)下對(duì)圖片進(jìn)行旋轉(zhuǎn)操作。(6) 圖片縮小功能:在當(dāng)前圖片尺寸大小的基礎(chǔ)上,圖片可逐級(jí)縮小。可對(duì)打開(kāi)的圖片進(jìn)行放大、縮小、向左旋轉(zhuǎn)、向右旋轉(zhuǎn)、全屏模式與返回原始尺寸等一系列的瀏覽模式操作。(4) 瀏覽圖片功能:對(duì)選中的圖片可以執(zhí)行瀏覽的功能,若圖片原本大小超過(guò)圖片瀏覽區(qū)域(即相框)的大小,則會(huì)自動(dòng)調(diào)整變成適應(yīng)圖片瀏覽區(qū)域的最大尺寸。(2) 圖片選中顯示功能:在圖片列表中選定某個(gè)圖片時(shí),此圖片的縮略圖成凸起放大狀態(tài),表示選中此圖片并將對(duì)此圖片進(jìn)行操作。如果圖片數(shù)量超過(guò)當(dāng)前屏幕顯示范圍時(shí),可向下滾動(dòng)顯示。電子相冊(cè)還支持幻燈片模式瀏覽圖片,并可以對(duì)圖片進(jìn)行刪除等操作。各個(gè)界面都有自己的功能菜單,通過(guò)調(diào)用自己的功能菜單對(duì)當(dāng)前界面進(jìn)行下一步的操作,如當(dāng)新建文件界面顯示時(shí),可通過(guò)菜單進(jìn)行打開(kāi)文件操作和軟鍵盤(pán)輸入操作;當(dāng)打開(kāi)文件時(shí)在文件內(nèi)容的顯示界面上,可通過(guò)菜單進(jìn)行顯示下一個(gè)文件內(nèi)容的操作和軟鍵盤(pán)編輯修改文件內(nèi)容的操作,并在文件內(nèi)容修改后,可通過(guò)修改文件提示框選擇是否保存修改后的文件內(nèi)容。記事本通過(guò)調(diào)用文件列表功能菜單對(duì)文件執(zhí)行各種操作。按鍵布局與物理鍵盤(pán)基本一致,按鍵布局美觀,同時(shí)鍵盤(pán)的邊緣相對(duì)寬一些,便于鍵盤(pán)的移動(dòng)。圖 6 消息提示框Fig. 6 Messagebox 華中農(nóng)業(yè)大學(xué)本科畢業(yè)論文(或設(shè)計(jì))14相鄰兩個(gè)界面之間切換時(shí),若后出現(xiàn)的界面大小小于先出現(xiàn)的界面大小,則第一個(gè)界面顯示蒙版即表示為禁用狀態(tài),如圖 5 和圖 6。消息提示框的顯示區(qū)域顯示提示動(dòng)畫(huà)和提示的內(nèi)容。界面的最下方左側(cè)為功能按鈕,右側(cè)的是返回按鈕,菜單中分別標(biāo)記為“Select”和 “Back”。圖 4 文件打開(kāi)界面Fig. 4 Documents open interface華中農(nóng)業(yè)大學(xué)本科畢業(yè)論文(或設(shè)計(jì))13記事本功能菜單設(shè)計(jì):如圖 5 所示,記事本功能菜單大小要小于記事本主要界面的大小,根據(jù)具體條目的數(shù)量來(lái)調(diào)整為合適的大小。界面上方顯示記事本圖標(biāo)和打開(kāi)的文件的文件名,中間的顯示區(qū)域?yàn)槲募?nèi)容顯示區(qū),可以接受文本的編輯和修改。界面的最下方左側(cè)為功能按鈕,華中農(nóng)業(yè)大學(xué)本科畢業(yè)論文(或設(shè)計(jì))12右側(cè)的是返回按鈕,此界面上分別標(biāo)記為“Option”和“Save”。界面上方顯示記事本圖標(biāo)和新建文件的文件名,如果沒(méi)有輸入文件名則不顯示。文件列表中文件以文件創(chuàng)建時(shí)間排序,將要進(jìn)行操作的文件名高亮顯示。界面上方提供記事本圖標(biāo)和記事本文字標(biāo)簽,中間的顯示區(qū)域顯示記事本文件列表。(11) 給用戶(hù)提供友好的圖形用戶(hù)界面,并合理安排界面元素布局,使其交互性好且方便用戶(hù)操作。(10) 軟鍵盤(pán)輸入功能:軟鍵盤(pán)支持英文輸入,Cap 鍵支持大小寫(xiě)英文切換,提供 Shift 鍵的上下字符切換功能,Enter 可以進(jìn)行回車(chē)換行,其 ESC 鍵執(zhí)行軟鍵盤(pán)退出功能。選擇刪除文件操作時(shí),會(huì)出現(xiàn)確定文件刪除的提示,如果此時(shí)放棄刪除操作,則文件不會(huì)被刪除,否則文件將會(huì)被徹底刪除,即從物理設(shè)備上被刪除。(8) 文件內(nèi)容修改提示功能:若在打開(kāi)的文件中對(duì)其內(nèi)容進(jìn)行了修改,在華中