已閱讀5頁(yè),還剩55頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
畢業(yè)設(shè)計(jì)(論文)任務(wù)書(shū)第1頁(yè)畢業(yè)設(shè)計(jì)(論文)題目畫圖板的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)設(shè)計(jì)(論文)要求及原始數(shù)據(jù)(資料)1深入了解LINUX下的QTCREATOR的相關(guān)技術(shù);2熟悉使用QT布局管理器的相關(guān)技術(shù);3熟練掌握QTUI編輯界面的應(yīng)用,訓(xùn)練編寫程序的能力;4深入分析QT中的信號(hào)和槽函數(shù)的機(jī)制;5設(shè)計(jì)并實(shí)現(xiàn)QT下的畫圖板的基本功能;6訓(xùn)練檢索文獻(xiàn)資料和利用文獻(xiàn)資料的能力;7訓(xùn)練撰寫技術(shù)文檔與學(xué)位論文的能力。第2頁(yè)畢業(yè)設(shè)計(jì)(論文)主要內(nèi)容1、QT的介紹與具體應(yīng)用;2、QT中的信號(hào)和槽函數(shù)的機(jī)制;3、畫圖板功能設(shè)計(jì);4、畫圖板界面設(shè)計(jì);5、畫圖板涂鴉功能實(shí)現(xiàn);6、畫圖板繪制基本圖形的實(shí)現(xiàn);7、實(shí)現(xiàn)編輯菜單功能;學(xué)生應(yīng)交出的設(shè)計(jì)文件(論文)1內(nèi)容完整、層次清晰、敘述流暢、排版規(guī)范的畢業(yè)設(shè)計(jì)論文;2包括畢業(yè)設(shè)計(jì)論文、源程序等內(nèi)容在內(nèi)的畢業(yè)設(shè)計(jì)電子文檔及其它相關(guān)材料。第3頁(yè)主要參考文獻(xiàn)(資料)1陳英,梁建武LINUX基礎(chǔ)及應(yīng)用教程水利水電出版社,2008,29422倪繼利QT以及LINUX操作系統(tǒng)窗口設(shè)計(jì)電子工業(yè)出版社,2006,451523BLAKOWSKIG,STEINMETZRAMEDIASYNCHRONIZATIONSURVEYREFERENCEMODEL,SPECIFICATION,ANDCASESTUDIESJIEEEJOURNALSELECTEDAREASINCOMMUNICATIONS,1996,14(1)5354金西,黃汪嵌入式LINUX技術(shù)及其應(yīng)用計(jì)算機(jī)應(yīng)用,2000,20(7)565劉崢嶸嵌入式LINUX應(yīng)用開(kāi)發(fā)詳解機(jī)械工業(yè)出版社,2004,53686林銳,韓永泉高質(zhì)量程序設(shè)計(jì)指南C、C語(yǔ)言電子工業(yè)出版社,2007,1241557JONATHANCORBET,ALESSANDRORUBINI,GREGKOAHHARTMANLINUXDEVICEDRIVERJAN20058錢能C程序設(shè)計(jì)教程清華大學(xué)出版社,2006,56889任善全,呂強(qiáng),錢培德等一個(gè)基于QTEMBEDDED的嵌入式LINUX應(yīng)用程序的實(shí)現(xiàn),計(jì)算機(jī)應(yīng)用與軟件,2006,210ISO/IECJTC1/SC29/WG11IS14496GENERICCODINGOFMOVINGPICTURESANDASSOCIATEDAUDIOINFORMATION(MPEG4)ISO/IEC,2000101511譚浩強(qiáng)C面向?qū)ο蟪绦蛟O(shè)計(jì)清華大學(xué)出版社,2006,8910012王子強(qiáng),劉海燕,李媛州LINUX下圖形用戶界面程序的開(kāi)發(fā)與實(shí)現(xiàn),計(jì)算機(jī)應(yīng)用與軟件,2005專業(yè)班級(jí)軟件1025班學(xué)生南茜要求設(shè)計(jì)(論文)工作起止日期2014年3月17日2014年6月27日指導(dǎo)教師簽字日期2014年3月17日教研室主任審查簽字日期系主任批準(zhǔn)簽字日期畫圖板的設(shè)計(jì)與實(shí)現(xiàn)摘要本文的主要內(nèi)容是記述同題課程設(shè)計(jì)中的一些關(guān)鍵技術(shù)和輔助文檔。本文的目標(biāo)是設(shè)計(jì)一款基于QT編程語(yǔ)言的簡(jiǎn)易畫圖板,使其具有涂鴉,繪制基本圖形等功能。本程序具有一定的實(shí)用意義和價(jià)值。功能分裝良好可以方便的根據(jù)需求進(jìn)行擴(kuò)充。本文運(yùn)用材料綜述的方法,首先記述了編程環(huán)境的搭建,介紹了QT的優(yōu)點(diǎn),QT編碼規(guī)范和QT的雙緩沖機(jī)制在繪圖中的運(yùn)用。著重分析了QT在軟件開(kāi)發(fā)中的編程機(jī)制,并根據(jù)應(yīng)用特點(diǎn)進(jìn)行了設(shè)計(jì)的構(gòu)件與算法的需求分析。其次在需求分析中給出是可行性分析,然后放入功能分析圖和流程圖幫助梳理設(shè)計(jì)思路。最后在詳細(xì)設(shè)計(jì)階段完成編碼,實(shí)現(xiàn)程序功能,得到一個(gè)功能健全的畫圖板應(yīng)用程序。在本文中將設(shè)計(jì)并實(shí)現(xiàn)畫圖板的一些基本功能,例如新建,打開(kāi),保存,清空,放大,縮小,還原,基本圖形繪制,轉(zhuǎn)換畫筆顏色等功能。最后運(yùn)行結(jié)果符合設(shè)計(jì)要求,方案可行。經(jīng)過(guò)測(cè)試后程序功能實(shí)現(xiàn)良好。關(guān)鍵詞嵌入式LINUXQT;圖形用戶界面;電子畫板;雙緩沖機(jī)制THEREALIZATIONOFDRAWINGBOARDFUNCTIONABSTRACTTHEMAINCONTENTOFTHISPAPERISDESCRIBEDWITHTHECOURSEINTHEDESIGNOFSOMEKEYTECHNOLOGIESANDSUPPORTINGDOCUMENTSTHEGOALOFTHISARTICLEISTODESIGNASIMPLEDRAWINGBOARDBASEDONQTPROGRAMMINGLANGUAGE,MAKEITSHAVEGRAFFITI,DRAWUPTHEBASICGRAPH,ANDOTHERFUNCTIONSTHISPROGRAMHASACERTAINPRACTICALSIGNIFICANCEANDVALUEFUNCTIONACCORDINGTOTHEREQUIREMENTSOFGOODPACKAGINGCANEASILYEXPANDEDTHISARTICLEAPPLIESTHEMETHODOFMATERIALREVIEW,THECONSTRUCTIONOFTHEFIRSTDESCRIBESTHEPROGRAMMINGENVIRONMENT,THISPAPERINTRODUCESTHEADVANTAGESOFQTQTCODECONVENTIONSANDQTDOUBLEBUFFERINGMECHANISMUSEDINTHEDRAWINGQTPROGRAMMINGINTHESOFTWAREDEVELOPMENTMECHANISMISANALYZEDEMPHATICALLY,ANDTHEDESIGNBASEDONTHEAPPLICATIONOFARTIFACTSANDREQUIREMENTSANALYSISOFTHEALGORITHMSECONDISFEASIBILITYANALYSISISGIVENINTHEREQUIREMENTSANALYSIS,ANDTHENINTOTHECOMBFUNCTIONANALYSISDIAGRAMANDFLOWCHARTTOHELPDESIGNTHINKINGPROGRAMISREALIZEDBYENCODINGTHEDETAILEDDESIGNPHASEISCOMPLETE,THEFUNCTION,GETAFUNCTIONINGDRAWINGBOARDAPPLICATIONDESIGNEDANDIMPLEMENTEDINTHISPAPERSOMEBASICFUNCTIONOFDRAWINGBOARD,FOREXAMPLETHENEW,OPEN,SAVE,EMPTY,ENLARGE,SHRINK,REDUCTION,BASICGRAPHICSRENDERING,CONVERTTHEBRUSHCOLOR,ANDOTHERFUNCTIONSFINALLYRUNRESULTSCONFORMTOTHEREQUIREMENTSOFTHEDESIGN,THESCHEMEISFEASIBLEPROGRAMFUNCTIONISGOODKEYWORDSLINUXQTGRAPHICALUSERINTERFACEGUIELECTRONICDRAWINGBOARDDOUBLEBUFFERINGMECHANISM目錄摘要IABSTRACTII1引言111研究背景112研究的目的和意義213程序設(shè)計(jì)的環(huán)境選擇22畫圖板設(shè)計(jì)的技術(shù)背景321QT的主要特征322QTCREATOR簡(jiǎn)介323QTCREATOR環(huán)境搭建424QT編程機(jī)制信號(hào)與槽機(jī)制簡(jiǎn)介525QT編碼規(guī)范726GDI繪圖理論基礎(chǔ)927雙緩沖機(jī)制928雙緩沖技術(shù)繪圖103畫圖板項(xiàng)目需求分析1231可行性研究12311經(jīng)濟(jì)可行性12312技術(shù)可行性12313運(yùn)行可行性12314時(shí)間可行性12315法律可行性1232功能分析1333系統(tǒng)用例分1334性能需求13341應(yīng)用需求分析14342運(yùn)行需求分析14343其他需求分析144畫圖板概要設(shè)計(jì)1541畫圖板功能模塊關(guān)系與劃分1542畫圖板總體設(shè)計(jì)流程圖165畫圖板詳細(xì)設(shè)計(jì)1751畫圖板界面設(shè)計(jì)18511畫圖板的界面元素聲明18512圖板界面布局實(shí)現(xiàn)1952畫圖板功能詳細(xì)設(shè)計(jì)20521畫圖板的文件編輯功能實(shí)現(xiàn)20522畫圖板的圖片編輯功能實(shí)現(xiàn)2353畫圖板繪圖功能實(shí)現(xiàn)26531繪圖板的基本圖形繪制功能實(shí)現(xiàn)26532繪圖板自由繪圖功能實(shí)現(xiàn)30533畫圖板畫圖輔助選項(xiàng)實(shí)現(xiàn)336畫圖板程序測(cè)試3561測(cè)試的重要性及目的3562測(cè)試的方法3663測(cè)試用例3664測(cè)試結(jié)果36結(jié)論38參考文獻(xiàn)39致謝40外文原文41中文翻譯491引言隨著操作系統(tǒng)不斷的更新?lián)Q代,其自帶的畫圖板界面及功能也是不斷變化著,像是XP、VISTA、WIN7,它們的畫圖板的界面布局風(fēng)格以及功能都有所不同。這表明盡管是簡(jiǎn)簡(jiǎn)單單的一個(gè)操作系統(tǒng)自帶畫圖板,系統(tǒng)設(shè)計(jì)人員也沒(méi)有停止對(duì)它的不斷研與探索,他們?cè)诓粩鄬ふ抑诵曰?、更能滿足大眾需求的改變。隨著社會(huì)的不管發(fā)展以及計(jì)算機(jī)的不斷普及,人們對(duì)畫畫的要求越高,對(duì)繪圖系統(tǒng)也提出了更高更全面的要求。許多用戶由于自身的畫圖習(xí)慣或者是視覺(jué)效果不同,對(duì)傳統(tǒng)的畫圖工具可能感覺(jué)不是特別滿意。就像孩子總是喜歡畫可愛(ài)型,而成人則畫實(shí)用的。不同年齡不同身份的人,需求不同。綜合上述,為了盡量讓所有人滿意,在此我設(shè)計(jì)一個(gè)大概的程序模型,讓別人來(lái)試試我的繪圖系統(tǒng)。對(duì)自從上世紀(jì)計(jì)算機(jī)系統(tǒng)向繪畫界的延伸以來(lái),繪圖技術(shù)已成為計(jì)算機(jī)系統(tǒng)不可分割的一部分。而圖形編輯器又是圖形編輯軟件的基礎(chǔ),幾乎所有的圖形編輯軟件,都是在擁有基本圖形編輯功能的基礎(chǔ)上實(shí)現(xiàn)更復(fù)雜功能的。故在圖形應(yīng)用非常廣泛的今天,研究開(kāi)發(fā)繪圖系統(tǒng)是非常有意義的。在繪圖方面實(shí)現(xiàn)繪制直線、矩形、圓形等基本功能,在界面設(shè)計(jì)方面實(shí)現(xiàn)了對(duì)圖形的操作,從而從底層對(duì)繪圖系統(tǒng)進(jìn)行簡(jiǎn)單的實(shí)現(xiàn)。與此同時(shí),簡(jiǎn)單小巧的繪圖記事功能軟件的發(fā)展也在蓬勃向前。本軟件功能與WINDOWS下附件中的畫圖軟件有類似功能。繪制方面的實(shí)現(xiàn)功能包括圖片的打開(kāi)新建保存,畫布的放大縮小,畫筆功能實(shí)現(xiàn),基本圖形的繪制,繪圖時(shí)可以選擇各種顏色,各種線寬。軟件支持保存和讀取JPG格式的圖形。本軟件運(yùn)用的是面向?qū)ο蟪绦蛟O(shè)計(jì)的思想。相對(duì)于面向過(guò)程的設(shè)計(jì)理念,面向?qū)ο蟮脑O(shè)計(jì)方法更適用于畫圖板的設(shè)計(jì),它使畫圖板所涉及的各部分功能模塊實(shí)現(xiàn)更好的封裝。它的特色是。一方法的唯一性,即方法是對(duì)軟件開(kāi)發(fā)過(guò)程全過(guò)程進(jìn)行綜合考慮得到的。二是高度的獨(dú)立性,對(duì)象是程序的基本元素,它將數(shù)據(jù)和操作緊密地連結(jié)在一起,并保護(hù)數(shù)據(jù)不會(huì)被外界的函數(shù)意外地改變。三是良好的可擴(kuò)展性,相對(duì)獨(dú)立的功能模塊使得程序可以根據(jù)需要進(jìn)行相印的擴(kuò)充或是縮減。11研究背景計(jì)算機(jī)繪圖是相對(duì)于手工繪圖而言的一種高效率、高質(zhì)量的繪圖技術(shù)。手工繪圖使用三角板、丁字尺、圓規(guī)等簡(jiǎn)單工具,是一項(xiàng)細(xì)致、復(fù)雜和冗長(zhǎng)的勞動(dòng)。不但效率低、質(zhì)量差,而且周期長(zhǎng),不易于修改。計(jì)算機(jī)繪圖的發(fā)展更加趨向于用戶需求導(dǎo)向,在一些專業(yè)領(lǐng)域中計(jì)算機(jī)繪圖發(fā)展迅猛,例如PHOTOSHOP、ADOBEIMAGE、AUTOCAD等。多個(gè)程序的匯集,組成功能齊全、能夠繪制基本地圖圖形和各類常用地圖的程序組,稱為繪圖軟件系統(tǒng),或稱為繪圖軟件包。繪圖軟件通常用高級(jí)算法語(yǔ)言編寫,以子程序的方式表示,每個(gè)子程序具有某種獨(dú)立的繪圖功能。繪圖軟件包是繪圖子程序的匯集,可包括幾十個(gè)至幾百個(gè)子程序。用戶根據(jù)需要,調(diào)用其中一部分子程序,繪制某種圖形或一幅地圖。12研究的目的和意義日常生活中,有很多方面都會(huì)用到畫圖來(lái)解決闡述一些問(wèn)題,這就需要借助計(jì)算機(jī)來(lái)進(jìn)行簡(jiǎn)單的畫圖工作,此時(shí)就需要一個(gè)能簡(jiǎn)單解決這些問(wèn)題的畫圖軟件。本選題是設(shè)計(jì)一個(gè)簡(jiǎn)單的基于QTCREATOR的畫圖軟件,能夠完成一些簡(jiǎn)單的畫圖需求?,F(xiàn)在比較經(jīng)常使用的是WINDOWS系統(tǒng)下附帶的畫圖軟件,它基本上可以滿足一些簡(jiǎn)單的畫圖需求。本設(shè)計(jì)就是按照這個(gè)畫圖軟件的思想設(shè)計(jì)的,使畫圖軟件能達(dá)到滿足日常畫圖需求,便于存儲(chǔ)編輯和展示,且要求功耗小且界面人性化,功能易擴(kuò)展。13程序設(shè)計(jì)的環(huán)境選擇QT類庫(kù)大致可以分為三個(gè)部分控件,框架和工具??丶糠职ōh(huán)境控件、主窗口控件、標(biāo)準(zhǔn)對(duì)話框、基本的GUI控件、擴(kuò)展GUI控件、GUI組織控件以及幫助系統(tǒng)控件??蚣懿糠职ǖ氖且恍┏橄蟮念?,通常不可見(jiàn),如對(duì)象模型、抽象控件、繪圖、拖放、控件外觀。工具部分包括時(shí)間日期和鏈表樹(shù)等數(shù)據(jù)結(jié)構(gòu),它們和GUI無(wú)關(guān)普通工具包括鏈表、堆棧、隊(duì)列、樹(shù)等常見(jiàn)數(shù)據(jù)結(jié)構(gòu),如QARRAY。圖形處理工具控制圖像的編碼解碼算法。如QIMAGELO。IO控制工具處理I,0的一些類,如QFILE。時(shí)間和日期工具類處理時(shí)間和日期,如QDATE,QTIME。在用QT開(kāi)發(fā)程序時(shí),對(duì)于GUI的設(shè)計(jì)有兩種方法,一種是通過(guò)自己寫代碼來(lái)界面進(jìn)行布局,但這就需要對(duì)OL有一定的熟練程度;另一種是通過(guò)QTDESIGNER來(lái)設(shè)計(jì)界面,只需在UI文件來(lái)拖控件來(lái)布局就行了。對(duì)只需要用QT進(jìn)行開(kāi)發(fā)的程序員來(lái)說(shuō),后者顯然比前者來(lái)的快。以下結(jié)合一個(gè)實(shí)例來(lái)介紹用QTDESIGNER來(lái)開(kāi)發(fā)程序的GUI,主窗口類從QWIDGET類派生,這樣我們能方便地使用QT的QMENUBAR類來(lái)添加菜單,并使用QT的控件類來(lái)擺放面板控件,整個(gè)程序以事件為驅(qū)動(dòng),通過(guò)QT的SIGNALSLOT機(jī)制與終端用戶交互。設(shè)計(jì)好界面后,在程序編譯后會(huì)生成一個(gè)UI一H的頭文件里面是一個(gè)UI一類,封裝了一些所拖放控件的變量名和一個(gè)比較重要的SETUPUI函數(shù),是一些布局的代碼。要用到這個(gè)界面是只需繼承這個(gè)類就可以了,或者是包含這個(gè)UIH的頭文件。設(shè)計(jì)類的主要思想是把所有的信號(hào)和槽放在構(gòu)造函數(shù)里,程序是以事件為驅(qū)動(dòng),當(dāng)產(chǎn)生一個(gè)信號(hào)時(shí),會(huì)去調(diào)用相應(yīng)的函數(shù)。2畫圖板設(shè)計(jì)的技術(shù)背景21QT的主要特征QT是TROLLTECH公司的產(chǎn)品,TROLLTECH是挪威的一家軟件公司,主要開(kāi)發(fā)兩種產(chǎn)品一種是跨平臺(tái)應(yīng)用程序界面框架;另外一種就是提供給做嵌入式LINUX開(kāi)發(fā)的應(yīng)用程序平臺(tái),能夠應(yīng)用到PDA和各種移動(dòng)設(shè)備,TROLLTECH公司網(wǎng)址HTTP/WWWTROLLTECHCOM/。QT是一個(gè)多平臺(tái)的C圖形用戶界面應(yīng)用程序框架,它提供給應(yīng)用程序開(kāi)發(fā)者建立藝術(shù)級(jí)的圖形用戶界面所需的所用功能。QT是完全面向?qū)ο螅苋菀走M(jìn)行擴(kuò)展,并且允許真正的組件編程。1996年開(kāi)始,QT正式進(jìn)入商業(yè)領(lǐng)域,它成為了全世界范圍內(nèi)數(shù)千種成功的應(yīng)用程序的基礎(chǔ)。QT同時(shí)也是流行的LINUX桌面環(huán)境KDE的基礎(chǔ),注KDE是所有主要的LINUX發(fā)行版的一個(gè)標(biāo)準(zhǔn)組件。它具有以下優(yōu)點(diǎn)1)優(yōu)良的跨平臺(tái)特性QT支持下列操作系統(tǒng)MICROSOFTWINDOWS95/98,MICROSOFTWINDOWSNT,LINUX,SOLARIS,SUNOS,HPUX,DIGITALUNIXOSF/1,TRU64,IRIX,F(xiàn)REEBSD,BSD/OS,SCO,AIX,OS390,QNX等等。2)面向?qū)ο驫T的良好封裝機(jī)制使得QT的模塊化程度非常高,可重用性較好,對(duì)于用戶開(kāi)發(fā)來(lái)說(shuō)是非常方便的。QT提供了一種稱為信號(hào)與槽(SIGNALS/SLOTS)的安全類型來(lái)替代CALLBACK,通過(guò)一個(gè)對(duì)象信號(hào)的發(fā)射,另一個(gè)槽函數(shù)的響應(yīng),使各個(gè)對(duì)象之間的通信安全而且高效,這使得各個(gè)元件之間的協(xié)同工作變得十分簡(jiǎn)單。并且QT是直接基于XLIB的,不依賴MOTIF工具包,所以它的執(zhí)行效率比一般的基于平臺(tái)的代碼的執(zhí)行效率要高。3)豐富的APIQT包括多達(dá)250個(gè)以上的C類,還提供基于模板的COLLECTIONS、SERIALIZATION、FILE、I/ODEVICE、DIRECTORYMANAGEMENT、DATE/TIME類。甚至還包括正則表達(dá)式的處理功能。4)支持2D/3D圖形渲染,支持OPENGL5)大量的開(kāi)發(fā)文檔6)XML支持22QTCREATOR簡(jiǎn)介QTCREATOR是跨平臺(tái)的QT集成開(kāi)發(fā)環(huán)境,QTCREATOR是QT被NOKIA收購(gòu)后推出的一款新的輕量級(jí)集成開(kāi)發(fā)環(huán)境(IDE)。此IDE具有良好的跨平臺(tái)運(yùn)行能力,支持的操作系統(tǒng)包括LINUX(32位及64位)、MACOSX以及WINDOWS。QTCREATOR的設(shè)計(jì)目標(biāo)是使開(kāi)發(fā)人員能夠利用QT這個(gè)應(yīng)用程序框架更加快速及輕易的完成開(kāi)發(fā)任務(wù)QTCREATOR可以幫助QT用戶更加快速便利的運(yùn)行項(xiàng)目,還可以提高有經(jīng)驗(yàn)的QT開(kāi)發(fā)人員的工作效率,提高代碼的可讀性。其中使用強(qiáng)大的C代碼編輯器可實(shí)現(xiàn)快速編寫代碼。語(yǔ)法標(biāo)識(shí)和代碼完成功能輸入時(shí)進(jìn)行靜態(tài)代碼檢驗(yàn)以及提示樣式上下文相關(guān)的幫助代碼折疊括號(hào)匹配和括號(hào)選擇模式高級(jí)編輯功能。使用瀏覽工具管理源代碼。集成了領(lǐng)先的版本控制軟件,包括GIT、PERFORCE和SUBVERSION開(kāi)放式文件,無(wú)須知曉確切的名稱或位置搜索類和文件跨不同位置或文件沿用符號(hào)在頭文件和源文件,或在聲明和定義之間切換。為QT跨平臺(tái)開(kāi)發(fā)人員的需求而量身定制。集成了特定于QT的功能,如信號(hào)與槽SIGNALSQLABELLABELNEWQLABEL“HELLOWORLD“,0APPSETMAINWIDGETLABELLABELSHOWRETURNAPPEXEC寫完上面的代碼后保存退出(WQ)VI編輯器。QMAKEPROJECT/把CPP文件編譯成PRO文件QMAKE/通過(guò)PRO文件自動(dòng)創(chuàng)建MAKEFILE文件MAKE/編譯,生成HELLOWORLD執(zhí)行文件圖21QTCREATOR程序構(gòu)件截圖24QT編程機(jī)制信號(hào)與槽機(jī)制簡(jiǎn)介信號(hào)/槽機(jī)制是QT區(qū)別于其它工具包的最有顯著特征的部分。在GUI編程中,當(dāng)一個(gè)WIDGET改變,我們經(jīng)常希望另外的WIDGET被告知。更普遍地,我們希望任何的對(duì)象都可以互相通信。比如,如果用戶點(diǎn)擊CLOSE按鈕,我們大多希望調(diào)用窗口的CLOSE()方法。以前的工具集通過(guò)CALLBACK來(lái)實(shí)現(xiàn)這種通信。CALLBACK是指向函數(shù)的指針,因此,若果你想讓處理函數(shù)通知你某些事件,你可以傳遞給另一個(gè)函數(shù)一個(gè)指針來(lái)處理函數(shù)。處理函數(shù)在適當(dāng)?shù)臅r(shí)候調(diào)用CALLBACK。CALLBACKS有兩種根本的缺陷第一,它們不是類型安全的,我們無(wú)法確定處理程序會(huì)調(diào)用正確參數(shù)的回調(diào)函數(shù)CALLBACK。第二,回調(diào)函數(shù)耦合于處理函數(shù),因?yàn)樘幚砗瘮?shù)必須知道去調(diào)用哪個(gè)回調(diào)函數(shù)。QT提供了回調(diào)的替代技術(shù)信號(hào)和槽。當(dāng)特定事件發(fā)生時(shí)引發(fā)相應(yīng)的信號(hào)。QT的WIDGET有許多預(yù)定義的信號(hào),同時(shí)我們也可以為WIDGET子類添加我們自定義的信號(hào)。槽是回應(yīng)特定的信號(hào)時(shí)所調(diào)用的方法。QT的窗口部件有許多預(yù)定義的槽,但是我們也可以為窗口部件的子類田間我們自定義的槽,以處理我們所感興趣的信號(hào)。信號(hào)槽機(jī)制是類型安全的信號(hào)的簽名必須跟接受的槽的簽名相匹配(事實(shí)上,槽的簽名可以比信號(hào)的簽名短,因?yàn)樗梢院雎灶~外的字段)。因?yàn)楹灻窍嗳莸?,編譯器就可以幫我們檢測(cè)類型的不匹配。信號(hào)和槽是松耦合的一個(gè)類產(chǎn)生一個(gè)信號(hào),并不知道而且不關(guān)心那個(gè)槽接受該信號(hào)。QT的信號(hào)槽機(jī)制保證,如果你連接了一對(duì)信號(hào)槽,槽會(huì)在適當(dāng)?shù)臅r(shí)間帶著信號(hào)的參數(shù)被調(diào)用。信號(hào)和槽可以附帶任何類型任何數(shù)量的參數(shù)。信號(hào)和槽是完全類型安全的。槽可以用來(lái)接受信號(hào),不過(guò)槽也是普通的成員函數(shù)。類似于對(duì)象不知道誰(shuí)接受它的信號(hào),槽也不知道是否有信號(hào)連接自己。這保證了QT可以創(chuàng)建完全獨(dú)立的組件。一個(gè)信號(hào)可以連接無(wú)數(shù)的槽,并且一個(gè)槽可以連接你想要連接的信號(hào)。甚至可以直接連接兩個(gè)信號(hào)(當(dāng)?shù)谝粋€(gè)信號(hào)產(chǎn)生,立即產(chǎn)生第二個(gè)信號(hào))。信號(hào)和槽一起形成了一種強(qiáng)大的組件編程機(jī)制。QT的信號(hào)和槽的機(jī)制可以保證如果你把一個(gè)信號(hào)和一個(gè)槽連接起來(lái),槽會(huì)在正確的時(shí)間使用信號(hào)的參數(shù)而被調(diào)用。信號(hào)和槽可以使用任何數(shù)量、任何類型的參數(shù)。它們是完全類型安全的不會(huì)再有回調(diào)核心轉(zhuǎn)儲(chǔ)(COREDUMP)。可以把許多信號(hào)和你所希望的單一槽相連,并且一個(gè)信號(hào)也可以和所期望的許多槽相連。把一個(gè)信號(hào)和另一個(gè)信號(hào)直接相連也是可以的??傮w來(lái)看,信號(hào)和槽構(gòu)成了一個(gè)強(qiáng)有力的組件編程機(jī)制。如果一個(gè)類要使用信號(hào)與槽機(jī)制,它就必須是從QOBJECT或QOBJECT的子類繼承,而且類的定義必須加上Q_OBJECT宏。SIGNALS、SLOTS和EMIT是QT特有的關(guān)鍵字,分別用來(lái)表示信號(hào)、槽、和發(fā)送信號(hào),移除這些關(guān)鍵字和預(yù)處理程序,就可以使用“標(biāo)準(zhǔn)的C編譯器”678。槽同其他函數(shù)一樣也具有訪問(wèn)權(quán)限,只是槽的訪問(wèn)權(quán)限決定了誰(shuí)可以和它相連,如一個(gè)PUBLICSLOTS包含了任何信號(hào)都可以相連的槽。一個(gè)PROTECTEDSLOTS包含了只有這個(gè)類和它的子類的信號(hào)才能連接的槽。這就是說(shuō)這些槽只是類的實(shí)現(xiàn)的一部分,而不是它和外界的接口。一個(gè)PRIVATESLOTS包含了只有這個(gè)類本身的信號(hào)可以連接的槽,甚至它的子類都沒(méi)有獲得連接的權(quán)利。圖22信號(hào)與槽機(jī)制示意圖25QT編碼規(guī)范第一條盡量不要直接引用QT示例(或其它符合GPL協(xié)議的程序源代碼)中源代碼如果引用了QT示例程序,請(qǐng)?jiān)噲D在內(nèi)部使用不同的代碼行來(lái)組織它。如果直接使用了QT的源代碼文件,請(qǐng)保留位于文件首部的版權(quán)聲明。如果您使用了別人編寫的源代碼,則需要取得相關(guān)的使用許可文書(shū)。但是如果你從建議中獲得的僅僅是一些想法,而不是你實(shí)際上使用的代碼,你也不需要文書(shū)。盡量不要對(duì)QT的源代碼進(jìn)行修改,如果為了某重要需求而一定要對(duì)QT源代碼進(jìn)行修改,那么一定要在源代碼中修改的位置做詳細(xì)的說(shuō)明,并署名。另外還要書(shū)寫詳細(xì)的修改文檔。第二條工程文件命名遵循的原則工程文件(PRO)命名采用工程名PRO的方式PTRO文件中HEARDERS和SOURCE行中如果有多個(gè)文件名(一般都會(huì)有的),則使用“”將他們隔開(kāi),并且使每一個(gè)文件名單獨(dú)占一行。原則上文件名的先后順序沒(méi)有限制,但是一般的慣例是將依賴性最小的文件寫在最前面,工程的主程序(一般是MAINCPP)往往出現(xiàn)在SOURCE的最后。一般將TARGET行寫在HEARDERS和SOURCE的下面。下面是范例HEADERSHELLOHSOURCEHELLOCPPMAINCPPTARGETHELLO工程中所有文件和目錄命名中的字母一律使用小寫,以保持在WINDOWS環(huán)境下的兼容性。第三條函數(shù)注釋三部分,功能、參數(shù)和返回值每個(gè)程序都應(yīng)該以一段簡(jiǎn)短地、說(shuō)明其功能的注釋開(kāi)頭。請(qǐng)為每個(gè)函數(shù)書(shū)寫注釋以說(shuō)明函數(shù)做了些什么。如果有參數(shù)和返回值,也需要對(duì)其進(jìn)行解釋。第四條變量、定義等注釋對(duì)于每個(gè)靜態(tài)變量和全局變量,請(qǐng)?zhí)砑酉鄳?yīng)的注釋語(yǔ)句。對(duì)于重要的變量、定義等進(jìn)行注釋。第五條變量和函數(shù)的命名原則變量名或函數(shù)名中使用大寫字符來(lái)區(qū)分各個(gè)部分,以便于記憶和閱讀。全局(包括類中的)變量用長(zhǎng)名字,局部變量用短名字。類成員變量前應(yīng)加上M_,全局變量加上G_,僅與本模塊有關(guān)的變量加上L_。如果定義QT類庫(kù)中某種類型的變量,采用將類名中大寫字母提取出并合并成小寫的縮寫字符串的方法(去掉第一個(gè)Q),如QLINEEDITM_LEINPUTNUMQSTRINGM_SNAME如果程序中出現(xiàn)了兩個(gè)類名縮寫一樣的問(wèn)題,如QTOOLBAR和QTOOLBUTTON的縮寫都是TB,這時(shí)應(yīng)將其中一個(gè)類的縮寫進(jìn)行變動(dòng),變動(dòng)的準(zhǔn)則以能夠避免沖突,同時(shí)縮寫能夠表達(dá)類名為準(zhǔn)。如這里可以將QTOOLBAR的縮寫為TBAR,QTOOLBUTTON仍用,這樣就可以避免命名沖突。聲明自定義對(duì)象類型的變量采用同樣的方法。局部變量應(yīng)盡量易懂簡(jiǎn)潔,使用常見(jiàn)的變量,如NUM,NCOUNT,I,J,K,N,LEN,POS,OFFSET,NREADNUM,INDEX,NRET,RET,STRING,FILENAME臨時(shí)變量,如LTMP,FTMP,TMPSTR,TEMPSTR自定義信號(hào)以SIG_開(kāi)頭,自定義槽以SLT_開(kāi)頭。SIG_和SLT_后面第一個(gè)單詞(或其縮寫)要以小寫字母開(kāi)頭,第二個(gè)以后的單詞(或縮寫)要以大寫字母開(kāi)頭。如SIG_MOUSECLICKED,SLT_GETMOUSEEVENT。另外,信號(hào)和槽的參數(shù)必須完全對(duì)應(yīng)。在用CONNECT進(jìn)行連接的時(shí)候,信號(hào)和槽中的參數(shù)可以只寫參數(shù)類型。基本結(jié)構(gòu)是數(shù)個(gè)以大寫字母開(kāi)頭的單詞。返回自定義PRIVATE變量值的函數(shù)命名建議以GET開(kāi)頭,如GETLENGTH可以表示取回成員變量M_NLENGTH等;設(shè)置自定義PRIVATE變量的函數(shù)命名建議以SET開(kāi)頭,如SETLENGTH可以表示設(shè)置成員變量M_NLENGTH等。這樣做是為了避免與QT類中的函數(shù)名發(fā)生沖突。全局函數(shù)命名請(qǐng)以小寫G開(kāi)頭。第六條自定義類的命名原則自定義類一般有兩個(gè)文件,一個(gè)頭文件,一個(gè)實(shí)現(xiàn)體CPP。文件名采用被封裝的類名,但是一律小寫。如果一些結(jié)構(gòu)或宏僅與本類有關(guān),可在類頭文件中定義。任何自定義類命名不要以Q開(kāi)頭,以免與QT類庫(kù)中的類混淆。(對(duì)自定義的類命名建議以大寫字母開(kāi)頭(MMCP),表達(dá)一定版權(quán)信息,并且在文件列表時(shí)自定義類會(huì)依次排在列表的前部)。如果需要自定義一個(gè)基類,請(qǐng)確保該基類的類名以BASE結(jié)束。工程的界面類一般從QWIGDETQMAINWINDOWQDIALOG類繼承,工程主界面類的命名采用“工程名MAINWINDOW”方式,如ACHARTMAINWINDOW即表示CHART工程的主界面類。主界面類往往在程序的開(kāi)頭(MAIN函數(shù))處構(gòu)造,建議將構(gòu)造主界面類的語(yǔ)句(MAIN函數(shù))放在MAINCPP中。對(duì)于一般的窗體,請(qǐng)?jiān)陬惷淖詈篌w現(xiàn)窗體的類型,一般的方法是如果從QWIDGET繼承而來(lái),則以WIDGET結(jié)尾,如果從QMAINWINDOW繼承而來(lái)則以WINDOW結(jié)尾,從QDIALOG繼承而來(lái),則以DIALOG結(jié)尾。如果在自定義類中(從QT某個(gè)類繼承),如果覆蓋了父類中某個(gè)函數(shù),請(qǐng)?jiān)谠摵瘮?shù)的聲明旁邊注明。第七條類聲明體中的編排在類的聲明體中,請(qǐng)按照Q_OBJECT、PUBLICSIGNALS、SLOTS、PROTECTEDPRIVATE,的順序?qū)⒊蓡T變量和函數(shù)進(jìn)行排列。如果需要在這個(gè)類(CLASS)中聲明某種數(shù)據(jù)類型(結(jié)構(gòu)、枚舉等),請(qǐng)將這個(gè)聲明放在所有成員變量和成員函數(shù)的前面。如果在一種類型的聲明中,即有成員變量,又有函數(shù)聲明,請(qǐng)使用兩個(gè)相同的類型聲明將它們隔開(kāi),如PRIVATEVOIDFUNCTIONPRIVATEINTM_NUMBER對(duì)一般的界面類,如果使用了信號(hào)槽,則CLASS聲明的第一行必須是Q_OBJECT建議避免使用PROTECTED類型的成員函數(shù)或者成員變量,因?yàn)樵赒T中,大量的事件處理函數(shù)(槽)均是以PROTECTED類型出現(xiàn)的。第九條工程中目錄的使用工程中的圖片(建議以JPEGPNG格式(避免使用GIF),統(tǒng)一保存在“/PICS”目錄中。工程使用的漢化相關(guān)文件(PO和QM)放在“/I18/”目錄中。工程的臨時(shí)交換目錄請(qǐng)以宏的形式定義(建議使用“/TEMP/”),不要使用固定目錄。另外,請(qǐng)不要使用“/TEMP/”目錄名(這個(gè)目錄名在QTFORWINDOWS的版本中有特殊意義)。第九條界面布局原則制作QT界面的時(shí)候,請(qǐng)盡量使用布局管理器(QLAYOUT)進(jìn)行布局管理,避免使用絕對(duì)坐標(biāo),除非你能夠絕對(duì)肯定這個(gè)界面的尺寸是完全不會(huì)變換的。如果某個(gè)區(qū)域出現(xiàn)了很多控件,在保證不會(huì)影響程序控制結(jié)構(gòu)的前提下,請(qǐng)將這些控件放在一個(gè)可以包含其它窗口控件的盒子(如QWIDGET,QFRAME,QGROUPBOX)中,然后再讓這個(gè)盒子出現(xiàn)在界面上(即這些控件以整體形式出現(xiàn))。書(shū)寫界面上的英文長(zhǎng)度的時(shí)候,請(qǐng)與對(duì)應(yīng)的中文進(jìn)行比較,確保漢化后中文能夠被完全顯示。代碼中如果出現(xiàn)了需要在界面上出現(xiàn)的文字,必須用英文表示,并且使用TR函數(shù)將其包含。如TR“MESSAGE”不能在程序中將這些文字直接用中文替換。26GDI繪圖理論基礎(chǔ)任何圖形程序的輸出,都離不開(kāi)圖形設(shè)備接口GDI(GRAPHICDEVICEINTERFACE),它是管理WINDOWS應(yīng)用程序在窗口內(nèi)的繪圖操作和與此相關(guān)的許多其它信息。如圖形設(shè)備(打印機(jī)、顯示器)的信息、繪圖的坐標(biāo)系統(tǒng)和映射模式、繪圖工具的當(dāng)前狀態(tài)(什么樣的畫筆、畫刷、文本的前景色與背景色、文本所使用的字體)7。WINDOWS的GDI繪制的各種圖形(點(diǎn)、線、圓、多邊形、矩形等)是與設(shè)備無(wú)關(guān)的,即在屏幕的窗口內(nèi)繪圖與在打印機(jī)上繪圖是相似的。GDI是一個(gè)可執(zhí)行程序,它接收WINDOWS應(yīng)用程序的繪圖請(qǐng)求(表現(xiàn)為GDI調(diào)用),并將它們傳送給相應(yīng)的設(shè)備驅(qū)動(dòng)程序,再由設(shè)備驅(qū)動(dòng)程序驅(qū)動(dòng)相應(yīng)的硬件設(shè)備,如打印機(jī)或顯示器輸出。應(yīng)用程序使用GDI可以對(duì)三種類型的圖形進(jìn)行操作文本操作、矢量圖形操作和光柵圖形操作(圖像操作)。1文本操作是以邏輯坐標(biāo)為單位來(lái)計(jì)算文本的輸出位置,用戶可以通過(guò)各種GDI函數(shù)來(lái)作出具有各種效果的文本。2矢量圖形指的是利用畫點(diǎn)、直線、曲線(折線、貝塞爾曲線等)、多邊形、扇形、矩形等函數(shù)所繪制的圖形。3光柵圖形操作是指以光柵圖形函數(shù)對(duì)以位圖形式存儲(chǔ)的數(shù)據(jù)進(jìn)行操作,它包括各種位圖和圖標(biāo)的輸出,其在屏幕上表現(xiàn)為對(duì)若干個(gè)行和列的像素操作。光柵圖形操作是直接從內(nèi)存到顯存的拷貝操作,其缺點(diǎn)是需要額外的內(nèi)存空間,優(yōu)點(diǎn)是操作速度快。27雙緩沖機(jī)制所謂“雙緩沖區(qū)”,故名思義就是要有倆緩沖區(qū)(簡(jiǎn)稱A和B)。這倆緩沖區(qū),總是一個(gè)用于生產(chǎn)者進(jìn)行輸入緩存,另一個(gè)用于消費(fèi)者進(jìn)行輸出讀取。當(dāng)倆緩沖區(qū)都操作完,再進(jìn)行一次交替切換(先前被生產(chǎn)者寫入的轉(zhuǎn)為消費(fèi)者讀出,先前消費(fèi)者讀取的轉(zhuǎn)為生產(chǎn)者寫入)。以此實(shí)現(xiàn)生產(chǎn)者和消費(fèi)者不會(huì)同時(shí)操作在同一個(gè)緩沖區(qū),就避免了發(fā)生沖突,因此也不需要在讀寫每一個(gè)數(shù)據(jù)單元時(shí)都進(jìn)行同步/互斥操作。雙緩沖展現(xiàn)了空間換時(shí)間的優(yōu)化思路。為了解決雙緩沖問(wèn)題,我們需要定義兩個(gè)互斥鎖(簡(jiǎn)稱LA和LB),分別對(duì)應(yīng)倆緩沖區(qū)。生產(chǎn)者或消費(fèi)者如果要操作某個(gè)緩沖區(qū),必須先擁有對(duì)應(yīng)的互斥鎖。QT的雙緩沖技術(shù)(DOUBLEBUFFERING)是QT繪畫機(jī)制的一部分,是一種在QT4中被全面采用的技術(shù)。其核心是把一個(gè)窗口部件渲染到一個(gè)脫屏PIXMAP(OFFSCREENPIXMAP)中,然后再把這個(gè)PIXMAP復(fù)制到顯示屏幕上。這樣做的目的是用于消除屏幕的閃爍并且因而界面會(huì)顯得更漂亮。QT4中,QT會(huì)自動(dòng)處理這些情況,所以在普通的繪畫中,我們不必要關(guān)注這些內(nèi)容。在更詳細(xì)的說(shuō)明這一技術(shù)前,簡(jiǎn)單介紹一下QT的繪畫機(jī)制。QT的繪畫機(jī)制本質(zhì)上是提供了2個(gè)工具QPAINTER和QPAINTDEVICE,分別代表人類世界的畫筆和畫板。GEMFIELD要完成一次繪畫,就必須有個(gè)畫筆(QPAINTER),另外,還得解決畫筆畫在哪兒(畫板,QPAINTDEVICE)的問(wèn)題。QT中的畫板是QPAINTDEVICE,當(dāng)然,GEMFIELD用到的都是它的子類,也就是具體哪種畫板它們是QWIDGET、QIMAGE、QPICTURE、QPIXMAP等,也就是每一個(gè)可見(jiàn)的控件(QWIDGET的子類)都是畫板(在其PAINTEVENT里繪畫)。28雙緩沖技術(shù)繪圖當(dāng)要繪制屏幕時(shí),我們只要調(diào)用PAINT函數(shù)即可。其中我們可以使用繪圖方法來(lái)繪制任何文字圖形圖像??墒钱?dāng)我們繪制的東西多了之后,你就會(huì)發(fā)現(xiàn)又是屏幕上的顯示根本不是我們要的結(jié)果,很雜亂。我們知道,如果窗體在響應(yīng)繪圖消息的時(shí)候要進(jìn)行復(fù)雜的圖形處理,那么窗體在重繪時(shí)由于過(guò)頻的刷新而引起閃爍現(xiàn)象。解決這一問(wèn)題的有效方法就是雙緩沖技術(shù)。因?yàn)榇绑w在刷新時(shí),總要有一個(gè)擦除原本圖象的過(guò)程,此時(shí)程序會(huì)利用背景色填充窗體繪圖區(qū),然后再調(diào)用新的繪圖代碼進(jìn)行重繪,這樣一擦一寫造成了圖象顏色的反差。當(dāng)WM_PAINT的響應(yīng)很頻繁的時(shí)候,這種反差也就越發(fā)明顯。于是我們就看到了閃爍現(xiàn)象。因此,雙緩沖區(qū)就提供了一個(gè)完美的解決方案。我們可以在緩沖區(qū)2中繪制圖像,而是用緩沖區(qū)1來(lái)輸出到屏幕。這樣我們就可以控制繪制和現(xiàn)實(shí)的過(guò)程,從而避免上面的現(xiàn)象。雙緩沖即在內(nèi)存中創(chuàng)建一個(gè)與屏幕繪圖區(qū)域一致的對(duì)象,先將圖形繪制到內(nèi)存中的這個(gè)對(duì)象上,再一次性將這個(gè)對(duì)象上的圖形拷貝到屏幕上,這樣能大大加快繪圖的速度。雙緩沖實(shí)現(xiàn)過(guò)程如下1在內(nèi)存中創(chuàng)建與畫布一致的緩沖區(qū)2在緩沖區(qū)畫圖3將緩沖區(qū)位圖拷貝到當(dāng)前畫布上4釋放內(nèi)存緩沖區(qū)其實(shí),在這樣一個(gè)簡(jiǎn)單的繪圖工作中,這樣的技術(shù)大可不必。而且隨著半導(dǎo)體技術(shù)的進(jìn)步,雙緩沖所能發(fā)揮出的功能相對(duì)減少。另外一個(gè)不容忽視的問(wèn)題是,使用雙緩沖技術(shù)會(huì)增加系統(tǒng)的負(fù)載。因?yàn)橄啾绕胀ǖ睦L制,它多出了一些工作。比如在SYSZUXPAD上運(yùn)行GEMFIELDFUWAARROW程序時(shí),雙緩沖時(shí)CPU的利用率是50,而沒(méi)有采用雙緩沖時(shí),CPU的利用率是37。雙緩沖和直接繪制的區(qū)別示意圖如下圖21雙緩沖繪圖原理圖3畫圖板項(xiàng)目需求分析31可行性研究該階段通過(guò)對(duì)系統(tǒng)目標(biāo)的初步調(diào)研和分析,提出可行性方案并進(jìn)行論證。我們?cè)谶@里主要從技術(shù)可行性、經(jīng)濟(jì)可行性和操作可行性等方面進(jìn)行分析。311經(jīng)濟(jì)可行性開(kāi)發(fā)該系統(tǒng)所需的相關(guān)資料可以通過(guò)對(duì)現(xiàn)已存在的相關(guān)系統(tǒng)進(jìn)行調(diào)查采集,所需的應(yīng)用軟件、硬件系統(tǒng)也易于獲得,因此開(kāi)發(fā)成本較低。而引進(jìn)使用本系統(tǒng)后,與傳統(tǒng)方式相比,具有高效率、低成本、高質(zhì)量的特點(diǎn),可以節(jié)省不少人力、物力及財(cái)力。所以,從經(jīng)濟(jì)的角度來(lái)看,該系統(tǒng)可行。312技術(shù)可行性技術(shù)可行性要考慮現(xiàn)有的技術(shù)條件是否能夠順利完成開(kāi)發(fā)工作,軟硬件配置是否能夠滿足開(kāi)發(fā)需求等等。本系統(tǒng)使用JSP開(kāi)發(fā)語(yǔ)言,調(diào)試相對(duì)簡(jiǎn)單,當(dāng)前的計(jì)算機(jī)硬件配置也完全能夠滿足開(kāi)發(fā)的需求,因此在技術(shù)上是絕對(duì)可行的。軟件方面,由于目前單機(jī)模式相對(duì)發(fā)展成熟,故軟件的開(kāi)發(fā)平臺(tái)成熟可行,它們速度快、容量大、可靠性能高、價(jià)格低,完全能滿足系統(tǒng)的需求。本系統(tǒng)的開(kāi)發(fā),是典型的面向?qū)ο笙到y(tǒng),采用QT編程語(yǔ)言,已無(wú)技術(shù)上的問(wèn)題。313運(yùn)行可行性運(yùn)行可行性是對(duì)組織結(jié)構(gòu)的影響、現(xiàn)有人員、機(jī)構(gòu)和環(huán)境對(duì)系統(tǒng)的適應(yīng)性以及人員培訓(xùn)補(bǔ)充計(jì)劃的可行性。當(dāng)前信息化技術(shù)已經(jīng)相當(dāng)普及,各類操作人員水平都有相當(dāng)?shù)母叨龋栽谶\(yùn)行上是可行的。314時(shí)間可行性從時(shí)間上看,在兩個(gè)月的時(shí)間里補(bǔ)充相關(guān)知識(shí)并完成系統(tǒng)的開(kāi)發(fā),雖然有些緊張,但卻并非不可實(shí)現(xiàn)。通過(guò)這兩個(gè)多月的不懈努力,系統(tǒng)功能已基本實(shí)現(xiàn)。315法律可行性1所有技術(shù)資料都為合法。2開(kāi)發(fā)過(guò)程中不存在知識(shí)產(chǎn)權(quán)問(wèn)題。3未抄襲任何系統(tǒng),不存在侵犯版權(quán)問(wèn)題。4開(kāi)發(fā)過(guò)程中未涉及任何法律責(zé)任。綜上所述,本系統(tǒng)的開(kāi)發(fā)從技術(shù)上、經(jīng)濟(jì)上、法律上都是完全可靠的。需求分析是一個(gè)軟件的基礎(chǔ)。如果沒(méi)有正確的需求分析就不能做出滿意的軟件。所以可以說(shuō),需求分析是一個(gè)軟件設(shè)計(jì)的靈魂。所以在任何系統(tǒng)開(kāi)發(fā)之前,都用該進(jìn)行相應(yīng)的需求分析。需求分析的精準(zhǔn)度越高,開(kāi)發(fā)出來(lái)的程序穩(wěn)靠行就越高,所需費(fèi)用就會(huì)降低。反之,做出來(lái)的程序安全系數(shù)不高,還會(huì)增加開(kāi)發(fā)費(fèi)用,造成人力物力資源的嚴(yán)重浪費(fèi)。32功能分析我作的是QTCREATOR下的畫圖板。在設(shè)計(jì)時(shí)需要考慮用戶的需求和畫圖的習(xí)慣。例如習(xí)慣上的工具面板應(yīng)該是豎排放置,而編輯菜單應(yīng)該放置在橫排。在進(jìn)行具體的軟件實(shí)際設(shè)計(jì)之前,應(yīng)先對(duì)使用過(guò)程中用戶可能需要并在本程序中應(yīng)當(dāng)實(shí)現(xiàn)的功能等進(jìn)行整理,并列一個(gè)簡(jiǎn)要的提綱,如下1畫板新建功能新建初始畫板。2畫板保存、另存為功能在對(duì)畫板進(jìn)行編輯之后,可以選擇保存或者另存為。3畫板的打開(kāi)功能可以打開(kāi)原來(lái)編輯并保存過(guò)的畫板。4畫板放大功能圖片可逐級(jí)放大尺寸。5畫板縮小功能圖片可逐級(jí)縮小尺寸。6畫板還原功能畫板通過(guò)不同尺寸的放大和縮小后,能夠還原到初始新建的尺寸大小。7畫板清空功能畫板可以在當(dāng)前任何狀態(tài)下進(jìn)行對(duì)當(dāng)前狀態(tài)的清空,回到初始新建畫板狀態(tài)。8畫板畫圖工具功能畫板可以實(shí)現(xiàn)選擇圖形、畫筆線寬、畫筆顏色等功能。9畫板的圖形選擇功能畫直線、圓形、矩形、圓角矩形。10圖片打開(kāi)、編輯、保存功能可以打開(kāi)一些格式的圖片,如PNG、BMP等,并且可以作為畫板背景,在其做編輯并且保存。33系統(tǒng)用例分圖41顯示了畫圖板使用人操作的功能模塊。包括了新建打開(kāi)保存,畫圖板的縮放,清屏,繪制基本圖形,畫筆刷子橡皮,改變顏色,改變線寬34DIAGRAM打開(kāi)保存新建清屏文件操作界面操作縮放用戶自由繪圖繪制基本圖形顏色選擇繪圖線寬選擇圖31功能分析用例圖性能需求為了保證系統(tǒng)能夠長(zhǎng)期、穩(wěn)定、安全、可靠、高效地運(yùn)行,系統(tǒng)處理的準(zhǔn)確性和及時(shí)性是系統(tǒng)的必要性能。作為系統(tǒng)中很多數(shù)據(jù)的來(lái)源,本系統(tǒng)的添加功能對(duì)于整個(gè)系統(tǒng)的功能及性能舉足輕重,其準(zhǔn)確性和及時(shí)性很大程度上決定了系統(tǒng)的成敗,因此在開(kāi)發(fā)過(guò)程中,必須采用一定的方法保證系統(tǒng)的準(zhǔn)確性和及時(shí)性。341應(yīng)用需求分析系統(tǒng)的性能要求通常是對(duì)系統(tǒng)需要的存儲(chǔ)容量以及后援存儲(chǔ)、重新啟動(dòng)和安全性、運(yùn)行效率等方面的考慮。軟件方面通過(guò)虛擬機(jī)軟件,你可以在一臺(tái)物理計(jì)算機(jī)上模擬出另一臺(tái)或多臺(tái)虛擬的計(jì)算機(jī),這些虛擬機(jī)完全就像真正的計(jì)算機(jī)那樣進(jìn)行工作,例如你可以安裝操作系統(tǒng)、安裝應(yīng)用程序、訪問(wèn)網(wǎng)絡(luò)資源等等。對(duì)于你而言,它只是運(yùn)行在你物理計(jì)算機(jī)上的一個(gè)應(yīng)用程序,但是對(duì)于在虛擬機(jī)中運(yùn)行的應(yīng)用程序而言,它就是一臺(tái)真正計(jì)算機(jī)。因此,當(dāng)你在虛擬機(jī)中進(jìn)行軟件評(píng)測(cè)時(shí),可能系統(tǒng)一樣會(huì)崩潰;但是,崩潰的只是虛擬機(jī)上的操作系統(tǒng),而不是物理計(jì)算機(jī)上的操作系統(tǒng),并且,使用虛擬機(jī)的“UNDO”1(恢復(fù))功能,你可以馬上恢復(fù)虛擬機(jī)到安裝軟件之前的狀態(tài)。虛擬系統(tǒng)通過(guò)生成現(xiàn)有操作系統(tǒng)的全新虛擬鏡像,它具有真實(shí)WINDOWS系統(tǒng)完全一樣的功能,進(jìn)入虛擬系統(tǒng)后,所有操作都是在這個(gè)全新的獨(dú)立的虛擬系統(tǒng)里面進(jìn)行,可以獨(dú)立安裝運(yùn)行軟件,保存數(shù)據(jù),擁有自己的獨(dú)立桌面,不會(huì)對(duì)真正的系統(tǒng)產(chǎn)生任何影響,而且具有能夠在現(xiàn)有系統(tǒng)與虛擬鏡像之間靈活切換的一類操作系統(tǒng)。虛擬系統(tǒng)和傳統(tǒng)的虛擬機(jī)(VMWARE,VIRTUALBOX,VIRTUALPC)不同在于虛擬系統(tǒng)不會(huì)降低電腦的性能,啟動(dòng)虛擬系統(tǒng)不需要像啟動(dòng)WINDOWS系統(tǒng)那樣耗費(fèi)時(shí)間,運(yùn)行程序更加方便快捷;虛擬系統(tǒng)只能模擬和現(xiàn)有操作系統(tǒng)相同的環(huán)境,而虛擬機(jī)則可以模擬出其他種類的操作系統(tǒng);而且虛擬機(jī)需要模擬底層的硬件指令,所以在應(yīng)用程序運(yùn)行速度上比虛擬系統(tǒng)慢得多。流行的虛擬機(jī)軟件有VMWAREVMWAREACE)、VIRTUALBOX和VIRTUALPC,它們都能在WINDOWS系統(tǒng)上虛擬出多個(gè)計(jì)算機(jī)。342運(yùn)行需求分析硬件條件酷睿2CPU、1GRAM、10G以上硬盤的PC機(jī)。軟件條件裝載UBANTU虛擬機(jī),QTCREATOR。343其他需求分析本系統(tǒng)具有較好的可維護(hù)性、可靠性、可理解性以及運(yùn)行效率,易于用戶理解和操作??删S護(hù)性包括了可讀性、可修改性、可測(cè)試性等含義;可靠性則通常包括正確性和健壯性。在系統(tǒng)開(kāi)發(fā)過(guò)程中,要于各種矛盾的目標(biāo)之間作權(quán)衡,并要在一定的限制條件下(經(jīng)費(fèi)、時(shí)間、可用的軟、硬件資源等),使上述各方面的需求得到最大限度的滿足。4畫圖板概要設(shè)計(jì)41畫圖板功能模塊關(guān)系與劃分功能模塊是指數(shù)據(jù)說(shuō)明、可執(zhí)行語(yǔ)句等程序元素的集合,它是指單獨(dú)命名的可通過(guò)名字來(lái)訪問(wèn)的過(guò)程、函數(shù)、子程序或宏調(diào)用。功能模塊化是將程序劃分成若干個(gè)功能模塊,每個(gè)功能模塊完成一個(gè)子功能,再把這些功能模塊總合起來(lái)組成一個(gè)整體,以滿足所要求的整個(gè)系統(tǒng)的功能。功能模塊化的根據(jù)是,如果一個(gè)問(wèn)題有多個(gè)問(wèn)題組合而成,那么這個(gè)組合問(wèn)題的復(fù)雜程度將大于分別考慮這個(gè)問(wèn)題時(shí)的復(fù)雜程度之和。這個(gè)結(jié)論使得人們樂(lè)于利用功能模塊化方法將復(fù)雜的問(wèn)題分解成許多容易解決的局部問(wèn)題。功能模塊化方法并不等于無(wú)限制地分割軟件,因?yàn)殡S著功能模塊的增多,雖然開(kāi)發(fā)單個(gè)功能模塊的工作量減少了,但是設(shè)計(jì)功能模塊間接口所需的工作量也將增加。本畫圖板的功能模塊劃分如圖所示其中需要擴(kuò)說(shuō)明的部分有在基本圖形的繪制中有線性繪圖和非線性繪圖兩個(gè)部分,此處在設(shè)計(jì)時(shí)我的想法是使用不同的事件響應(yīng)機(jī)制來(lái)完成設(shè)計(jì)。即在繪制直線時(shí)使用MOUSEPRESSEVENT和MOUSERELEASEEVENT。獲得LASTPOINT和TEMPPOINT兩個(gè)首尾點(diǎn),然后調(diào)用程序自帶的DRAWLINE()函數(shù)來(lái)完成繪制。而在繪制非線性圖形時(shí),此處實(shí)現(xiàn)的基本圖形有橢圓形,矩形,圓角矩形。此處使用MOUSEPRESSEVENT和MOUSEMOVEEVENT來(lái)完成繪制。編輯功能簡(jiǎn)易畫圖板畫圖功能圖編輯文件編輯新建打開(kāi)保存縮放清空線性非線自由繪圖基本圖形輔助選項(xiàng)顏色線寬鉛筆刷子圖41畫圖板功能模塊圖42畫圖板總體設(shè)計(jì)流程圖流程程序圖是程序分析中最基本、最重要的分析技術(shù),它是進(jìn)行流程程序分析過(guò)程中最基本的工具。它運(yùn)用工序圖示符號(hào)對(duì)生產(chǎn)現(xiàn)場(chǎng)的整個(gè)制造過(guò)程做詳細(xì)的記錄,以便對(duì)零部件、產(chǎn)品在整個(gè)制造過(guò)程中的生產(chǎn)、加工、檢驗(yàn)、儲(chǔ)存等環(huán)節(jié)待作詳細(xì)的研究與分析,特別適用于分析生產(chǎn)過(guò)程中的成本浪費(fèi),提高經(jīng)濟(jì)效益。本軟件作為一個(gè)高度的面向?qū)ο蟮某绦?,其流程圖相對(duì)簡(jiǎn)便,可以簡(jiǎn)化的概述為從畫圖板打開(kāi),畫圖或圖片編輯,到關(guān)閉的整個(gè)過(guò)程。畫圖板文件操作整個(gè)過(guò)程如下圖所示圖42畫圖板文件操作程序流程圖開(kāi)始初始化繪圖區(qū)域是否打開(kāi)已有圖片打開(kāi)并讀入已有圖片新建或默認(rèn)文件繪制和修改圖形是否保存保存編輯好的圖片文件新建一個(gè)畫圖板退出程序結(jié)束YNNY5圖43畫圖板畫圖功能流程圖開(kāi)始定義并初始化SHAPE參數(shù)記錄形狀COLOR參數(shù)記錄顏色WIDTH參數(shù)記錄線寬選擇線寬改變畫筆屬性默認(rèn)值(黑色)改變畫筆屬性默認(rèn)值(W1)選擇線色橢圓矩形直線DRAWELIPSEDRAWRECTDRAWLINE鼠標(biāo)左鍵按下,響應(yīng)函數(shù)MOUSEPRESSEVENT開(kāi)始記錄坐標(biāo)點(diǎn)位置鼠標(biāo)左鍵按下并移動(dòng),響應(yīng)函數(shù)MOUSEMOVEEVENT繪制圖形鼠標(biāo)左鍵彈起,響應(yīng)函數(shù)MOUSERELEASEEVENT得到圖形結(jié)束畫圖板詳細(xì)設(shè)計(jì)51畫圖板界面設(shè)計(jì)511畫圖板的界面元素聲明在畫圖板的界面設(shè)計(jì)中我沒(méi)有使用QTDESIGNER等UI界面開(kāi)發(fā)工具,而是選用的直接在QTCREATOR中定義并實(shí)現(xiàn)了一個(gè)WINDOW類,它是繼承于QWIDGET的一個(gè)子類。在WINDOW類中我們首先使其繼承于QMAINWINDOW類,同時(shí)在類的定義中加入Q_OBJECT宏。在WINDOWH頭文件中加入如下定義代碼CLASSWINDOWPUBLICQMAINWINDOWQ_OBJECTPUBLICWINDOWQWIDGETPARENT0/WINDOW類的構(gòu)造函數(shù)和析構(gòu)函數(shù)WINDOWVOIDCREATECOMMANDTOOLBAR/聲明命令工具欄,畫圖工具欄,和菜單欄VOIDCREATEPAINTTOOLBARVOIDCREATEMENUS其次我們?cè)赪INDOWH中聲明以下內(nèi)容表51WINDOWH中聲明的按鈕和對(duì)應(yīng)的槽函數(shù)列表界面布局聲明的私有類型按鈕對(duì)象聲明的響應(yīng)槽函數(shù)NEWBTNNEWSLOTOPENBTNOPENSLOTSAVEBTNSAVESLOTSAVEASBTNSAVEASSLOTLARGEBTNLARGESLOTSMALLBTNSMALLSLOTCLEARBTNCLEARSLOT定義在PAINT類菜單欄按鈕QTOOLBARCOMMANDTOOLBARNORMALBTNNORMALSLOTLINEBTNLINESLOTRECTANGLEBTNRECTSLOTROUNDRECTBTROUNDRECTSLOTELLIPSEBTNELLIPSESLOTPENBTNPENSLOTBRUSHBTNBRUSHSLOTRUBBERBTNRUBBERSLOTCOLORBTNCOLORSLOT工具欄按鈕QTOOLBARPAINTTOOLBARSPINBOXSPINBOXVALUECHANGEDINT其次在聲明中還應(yīng)當(dāng)注意的是QSPINBOXSPINBOXVALUECHANGEDINT/在線寬的選擇上采取SPINBOX來(lái)方便而精確的記錄當(dāng)前線寬,而不是用信號(hào)和槽機(jī)制進(jìn)行響應(yīng)QACTIONSAVEASACTIONQACTIONEXITACTION/此處聲
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 高考語(yǔ)文寫作專項(xiàng)訓(xùn)練與范文賞析
- 物業(yè)電梯維保管理流程標(biāo)準(zhǔn)
- 采血室操作規(guī)程及安全注意事項(xiàng)
- 傳統(tǒng)建筑裝飾藝術(shù)賞析與實(shí)踐
- 節(jié)能環(huán)保技術(shù)應(yīng)用案例
- 企業(yè)法務(wù)重點(diǎn)條款解讀及應(yīng)用案例
- 醫(yī)師定期業(yè)務(wù)考核題庫(kù)及解析匯編
- 電子產(chǎn)品質(zhì)檢報(bào)告編制指南
- 企事業(yè)單位安全生產(chǎn)責(zé)任體系
- 2026年高考新課標(biāo)生物含解析及答案
- 四川省瀘州市2026屆數(shù)學(xué)高二上期末統(tǒng)考試題含解析
- 中國(guó)金融電子化集團(tuán)有限公司2026年度校園招聘?jìng)淇碱}庫(kù)及一套完整答案詳解
- 生物實(shí)驗(yàn)探究教學(xué)中學(xué)生實(shí)驗(yàn)探究能力培養(yǎng)與評(píng)價(jià)體系研究教學(xué)研究課題報(bào)告
- 2025年塔吊指揮員考試題及答案
- 2025福建閩投永安抽水蓄能有限公司招聘21人備考題庫(kù)附答案
- 11116《機(jī)電控制工程基礎(chǔ)》國(guó)家開(kāi)放大學(xué)期末考試題庫(kù)
- 2025四川綿陽(yáng)市江油鴻飛投資(集團(tuán))有限公司招聘40人筆試考試備考題庫(kù)及答案解析
- 雨課堂在線學(xué)堂《社會(huì)研究方法》作業(yè)單元考核答案
- 高中歷史選修一 第13課 當(dāng)代中國(guó)的民族政策 教學(xué)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)論文晉華宮礦340萬(wàn)噸新井通風(fēng)設(shè)計(jì)含全套CAD圖紙
- 醫(yī)院清洗服務(wù)方案
評(píng)論
0/150
提交評(píng)論