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