版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、用戶界面自動(dòng)生成軟件的設(shè)計(jì)與實(shí)現(xiàn)The Design and Implementation of AutomaticGenerator for User Interface畢業(yè)設(shè)計(jì)(論文)中文摘要用戶界面自動(dòng)生成軟件的設(shè)計(jì)與實(shí)現(xiàn)摘 要:如今,大多數(shù)電子設(shè)備都配有相應(yīng)的用戶界面,而能擁有一個(gè)精良的 用戶界面也已成為眾多設(shè)備所追求的目標(biāo)。同時(shí),依附于人類不斷革新的科技, TFT-LCD顯示屏在各方面性能有越來(lái)越多的提升,漸漸走入了百姓家用電器、 工業(yè)制造控制等領(lǐng)域。但是普通用戶想在其上設(shè)計(jì)顯示出色彩逼真,內(nèi)容豐富的界面并不容易。因?yàn)楦鱾€(gè)設(shè)備本身有一定的資源短板, 而且用戶也不了解界面編 程設(shè)計(jì)方法
2、。因此有必要來(lái)解決普通用戶(不用了解設(shè)備等是如何工作)輕松簡(jiǎn) 單的在設(shè)備TFT-LCD屏上自行設(shè)計(jì)界面的問(wèn)題。本研究題目依托用戶給定的指令集,借助 QT設(shè)計(jì)軟件,在計(jì)算機(jī)上實(shí)現(xiàn)用 戶自定義界面的設(shè)計(jì)。借助計(jì)算機(jī)實(shí)現(xiàn)對(duì)用戶界面的設(shè)計(jì)、修改等功能;通過(guò)計(jì)算機(jī)的串口與用戶終端通信,在設(shè)備上顯示出用戶自行設(shè)計(jì)的界面。本論文主要描述了本次課題的開(kāi)發(fā)意義、開(kāi)發(fā)的流程和所完成的功能。并著 重闡明了設(shè)計(jì)思路和具體實(shí)現(xiàn)手段。關(guān)鍵詞:TFT-LCD ;界面生成;QT畢業(yè)設(shè)計(jì)(論文)外文摘要The Design and Implementation of Automatic Generator for UserIn
3、terfaceAbstract: Nowadays,most electronic devices are equipped with user interface,and can have a good user interface is becoming an aim for them to get.Meanwhile,relying on the continuous innovation of science and technology, TFT-LCD ,in the most aspects of performance has increased dramatically, b
4、ut its price is gradually declining, And now it is going into people household appliances, industrial manufacturing control and other fields.But it is difficult for ordinary users to design and display the interface with rich contents and vivid colors. Because each device has some certain disadvanta
5、ges,andusers do not know the programming methods of the interface as well.So it is necessary to help the ordinary users (do not need to know how the device works) to design their own interface easily and simply.This study relys on the user-defined sets of instruction to complete the design of user-d
6、efined interface in the computer. Using computers to design and revise the user interface ,and realize the communaction between computers and users by the RSC232 to upload and display the users interface in other devices.This paper mainly describes the development significance ,development process a
7、nd how to work out the functions of this topic. And especially elaborates the idea of design and the implement methods of this software.Keywords:TFT-LCD ; Interface generation QT TOC o 1-5 h z HYPERLINK l bookmark8 o Current Document 1引言 1 HYPERLINK l bookmark10 o Current Document 研究意義 1 HYPERLINK l
8、 bookmark12 o Current Document 可行性分析 2 HYPERLINK l bookmark14 o Current Document 2系統(tǒng)需求分析 3 HYPERLINK l bookmark16 o Current Document 系統(tǒng)初步分析 3 HYPERLINK l bookmark18 o Current Document 流程分析 4 HYPERLINK l bookmark20 o Current Document 3系統(tǒng)總體設(shè)計(jì) 7 HYPERLINK l bookmark22 o Current Document 開(kāi)發(fā)原則 7 HYPERLIN
9、K l bookmark24 o Current Document 系統(tǒng)設(shè)計(jì)要點(diǎn) 8 HYPERLINK l bookmark26 o Current Document 系統(tǒng)總體結(jié)構(gòu)設(shè)計(jì) 9 HYPERLINK l bookmark28 o Current Document 4模塊詳細(xì)設(shè)計(jì)與實(shí)現(xiàn) 15 HYPERLINK l bookmark30 o Current Document 編輯繪制模塊 15 HYPERLINK l bookmark32 o Current Document 翻譯轉(zhuǎn)換模塊 25 HYPERLINK l bookmark34 o Current Document 屬性
10、修改模塊 30 HYPERLINK l bookmark36 o Current Document 通信管理模塊 37 HYPERLINK l bookmark38 o Current Document 5用戶使用手冊(cè) 39 HYPERLINK l bookmark40 o Current Document 系統(tǒng)功能簡(jiǎn)介 39 HYPERLINK l bookmark42 o Current Document 系統(tǒng)運(yùn)行與操作指南 39結(jié)論 40致ft 錯(cuò)誤!未定義書(shū)簽。 HYPERLINK l bookmark44 o Current Document 參考文獻(xiàn) 41附錄(設(shè)備命令表) 421
11、引言如今,用戶界面已經(jīng)逐漸成為現(xiàn)代科技中的重點(diǎn)關(guān)注對(duì)象,只有擁有良好的用戶界面與操作,才能吸引更多的顧客用戶?,F(xiàn)在一些高端機(jī)上,都大部分帶有圖形庫(kù)設(shè)計(jì),而且資源內(nèi)存等相對(duì)豐富, 顯示圖形界面,以及對(duì)界面等進(jìn)行修改操作不是什么難事。不管是開(kāi)發(fā)者還是用 戶,都能較好的掌握它們。然而,考慮到一些小型機(jī)器,或者說(shuō)是資源比較稀少 的設(shè)備,它本身雖然可以顯示界面,但不夠美觀,不支持界面的一些修改操作, 而且也不具備豐富的圖形庫(kù)。對(duì)于開(kāi)發(fā)者來(lái)說(shuō),也許還能通過(guò)編程解決這個(gè)難點(diǎn), 但對(duì)于用戶,要讓各個(gè)用戶掌握硬件編程技術(shù)去修改界面無(wú)疑是困難的。因此有必要設(shè)計(jì)一個(gè)方案,來(lái)解決普通用戶(不需理解機(jī)器如何工作)輕松
12、簡(jiǎn)單的完成基于TFT-LCD液晶屏界面設(shè)計(jì)問(wèn)題。研究意義當(dāng)今,借助于嵌入式發(fā)展在大眾生活中的應(yīng)用越來(lái)越廣,人們的生活質(zhì)量也因?yàn)橛辛烁鞣N高科技設(shè)備而有了普遍的提高。然而時(shí)代在進(jìn)步,人們的需求也在提高。為每個(gè)電子設(shè)備設(shè)計(jì)一個(gè)精良的用 戶界面以便人們輕松操作已經(jīng)越發(fā)變得重要。 但現(xiàn)在的情況是大部分的設(shè)備,具 內(nèi)部的資源,內(nèi)存大小等比較稀缺, 不可能讓人們像在計(jì)算機(jī)端上操作一樣, 隨 意的去用各種方法顯示漢字,圖形, 更談不上顯示五顏六色的逼真圖案了。 這樣 一來(lái),顯示友好的人機(jī)界面就有點(diǎn)困難了。就算是對(duì)于現(xiàn)今比較高端的單片機(jī)來(lái)說(shuō),要做到這些方面,也是十分的不容 易。這些工作不僅耗時(shí)費(fèi)力,價(jià)格也不是被
13、大眾所能接受的,很難做到美觀大方。 而且大部分設(shè)備設(shè)計(jì)界面也需要一定的編程技術(shù),這對(duì)普通用戶來(lái)說(shuō)去設(shè)計(jì)一個(gè) 自己喜歡的界面是非常困難的。所以如何做到讓普通用戶能在資源較少的設(shè)備上 自行設(shè)計(jì)界面這一任務(wù)就變得十分重要了。所以,為了滿足此嵌入式系統(tǒng)的應(yīng)用需求, 讓大部分的普通用戶自行能設(shè)計(jì) 界面。本課題設(shè)計(jì)一套滿足用戶自定義顯示指令集的用戶界面生成軟件,即由計(jì)算機(jī)端繪制圖形,在單片機(jī)設(shè)備上顯示出來(lái)。本課題設(shè)計(jì)一個(gè)界面自動(dòng)生成軟件,即開(kāi)發(fā)者把在計(jì)算機(jī)端上繪制的圖形以 及文本內(nèi)容轉(zhuǎn)變成指定的十六進(jìn)制命令代碼傳送到單片機(jī)上,然后由單片機(jī)翻譯命令代碼,把它還原成原始圖像顯示在指定的單片機(jī)設(shè)備上,如此一來(lái),
14、則無(wú)需 用戶了解如何操作硬件等設(shè)備,就可以高效簡(jiǎn)便的完成一系列的需求設(shè)計(jì)??尚行苑治黾夹g(shù)可行性分析開(kāi)發(fā)者采用的開(kāi)發(fā)軟件為 QT系列。此課題的可用開(kāi)發(fā)軟件不局限于 QT, 例如MFC, Delphi等,甚至是VB都可以完成本題目。MFC即微軟提供的一個(gè)類庫(kù),以C+類形式封裝了許多的類庫(kù)供開(kāi)發(fā)人員 使用,大大減少了開(kāi)發(fā)人員的工作量。Delphi也是一款以圖形界面為主的開(kāi)發(fā)軟 件,其主要語(yǔ)言為Pascal但經(jīng)過(guò)開(kāi)發(fā)者的對(duì)比,對(duì)于 Delphi來(lái)說(shuō),它所使用的是Pascal語(yǔ)言,但本 課題的一大特點(diǎn)是要突出面向用戶, 這里的面向用戶不僅僅是軟件使用方面,同時(shí)在開(kāi)發(fā)過(guò)程中,對(duì)開(kāi)發(fā)者亦是如此。QT所使用的
15、就是面向用戶編程的 C+語(yǔ)言,而且其內(nèi)部封裝了許多包,集成化程度非常高,而且其設(shè)計(jì)界面封裝完成度 也非常優(yōu)秀,這對(duì)于Delphi來(lái)說(shuō)是一大優(yōu)勢(shì)。對(duì)于MFC,其使用的也是C+語(yǔ)言,但是MFC無(wú)法完成跨平臺(tái)跨系統(tǒng)的操 作,而QT所支持的為大部分的主流操作系統(tǒng)。對(duì)于本課題,其主要的一部分為繪圖操作, QT中提供了大量封裝好的繪圖 函數(shù),可以方便的調(diào)用,而且也提供了多種重寫(xiě)方法,完全能適應(yīng)各個(gè)開(kāi)發(fā)人員 的不同思想方法,同時(shí) QT也支持串口編程,都有對(duì)應(yīng)的封裝包。綜上所述,開(kāi)發(fā)者認(rèn)為,采用 QT開(kāi)發(fā)的優(yōu)勢(shì)具有以下幾點(diǎn):.面向?qū)ο驫T的高模塊化得益于它優(yōu)秀的機(jī)制,可重用性令人滿意,對(duì)于用戶來(lái)說(shuō)是 非常簡(jiǎn)便
16、的,而且其編程語(yǔ)言對(duì)開(kāi)發(fā)者來(lái)說(shuō)亦是如此。.優(yōu)秀的封裝程度QT中的封裝函數(shù)非常豐富,對(duì)完成本課題來(lái)說(shuō)無(wú)疑是簡(jiǎn)便高效的。.良好的跨平臺(tái)性QT的開(kāi)發(fā)環(huán)境支持各種主流系統(tǒng),如 Linux, Windows等。經(jīng)濟(jì)可行性分析開(kāi)發(fā)者所要開(kāi)發(fā)的軟件系統(tǒng)的需求比較低, 加上如今的軟硬件設(shè)施都十分發(fā) 達(dá),而且所使用的擁有TFT屏的大部分設(shè)備價(jià)格親民。所以在這些方面的支出上 不是很大。止匕外,本目標(biāo)軟件并不是十分的復(fù)雜難懂,開(kāi)發(fā)者主要集中精力于軟件方面, 硬件方面考慮較少,開(kāi)發(fā)周期較短,各種支出合理,不會(huì)造成太大的負(fù)擔(dān)。因此 在經(jīng)濟(jì)角度上是完全可行。2系統(tǒng)需求分析本章主要介紹了以下內(nèi)容:首先對(duì)用戶需求進(jìn)行分析引出
17、制作此課題的意義; 其次對(duì)整個(gè)軟件開(kāi)發(fā)流程進(jìn)行總體概括描述。系統(tǒng)初步分析用戶需求分析當(dāng)下,彩色液晶顯示作為如今高科技的技術(shù)結(jié)晶,其應(yīng)用得到的越來(lái)越多的 傳播。同時(shí)為設(shè)備設(shè)計(jì)一個(gè)精良的界面也已成為重中之重。但由于在彩色液晶顯示TFT-LCD上設(shè)計(jì)界面應(yīng)用又有較嚴(yán)重的局限性和必要的技術(shù)知識(shí),所以普通 用戶可能無(wú)法靠自己來(lái)設(shè)計(jì)出精良的界面。目前市場(chǎng)上生產(chǎn)的智能顯示器具有如下優(yōu)點(diǎn):循環(huán)、交替、重疊、滾屏等, 它們支持顯示預(yù)制畫(huà)面:所謂預(yù)制畫(huà)面,就是指所有的顯示內(nèi)容都可分為固定部 分與變化部分,對(duì)于固定部分,可以預(yù)先在微機(jī)上進(jìn)行編制,然后將其作為“預(yù) 置畫(huà)面”送入機(jī)內(nèi)Flash(閃存)中,在需要顯示時(shí),
18、使用簡(jiǎn)單的頁(yè)面調(diào)用指令就 可直接調(diào)出顯示。預(yù)置畫(huà)面不但可以循環(huán)、交替、重疊顯示,還可以與現(xiàn)場(chǎng)實(shí)時(shí) 數(shù)據(jù)組合顯示,預(yù)置畫(huà)面的使用可以減少工作中通訊傳輸?shù)呢?fù)擔(dān)以及重復(fù)性的工 作。但拋開(kāi)以上優(yōu)點(diǎn),其中大部分的操作都需要對(duì)設(shè)備有一定得了解以及相應(yīng)的 專業(yè)知識(shí),但對(duì)普通用戶來(lái)說(shuō),掌握這幾點(diǎn)有一定的難度。因此,設(shè)計(jì)一個(gè)畫(huà)面 自動(dòng)生成軟件,可以使用戶在不需要了解太多的硬件和編程知識(shí)下,就可以自行 對(duì)設(shè)備進(jìn)行簡(jiǎn)單的圖形、圖像、文字的設(shè)計(jì)和傳送顯示,這無(wú)疑幫助用戶大大降 低了操作門(mén)檻,也能讓液晶顯示設(shè)備更好的融入大眾環(huán)境?,F(xiàn)有系統(tǒng)概況計(jì)算機(jī),平板等高端電子設(shè)備如今已經(jīng)普遍融入到人們的生活中。 對(duì)于使用 這些設(shè)備
19、的用戶來(lái)說(shuō),設(shè)計(jì)屬于自己的界面并不困難,因?yàn)檫@些設(shè)備上有相當(dāng)多 的資源以及足夠的內(nèi)存空間。即便退一步來(lái)說(shuō),使用 ARM, Cortex等系列的高 端產(chǎn)品,它們也都配備了圖形庫(kù)等資源,也能讓用戶完成基本的界面設(shè)計(jì)。但是考慮到仍有很多用戶,以及一些有特殊需求的人群,他們使用的設(shè)備并 不具備以上優(yōu)點(diǎn)或資源,所以想要設(shè)計(jì)出自己界面就顯得有些困難了。所以現(xiàn)在有部公司提供畫(huà)面自動(dòng)生成軟件給這些有需求的人群使用,但它們的設(shè)計(jì)有一些小瑕疵:即當(dāng)用戶完成了圖像繪制后,各種指令的確能正常生成, 但用戶對(duì)某個(gè)圖形不滿意,想要修改時(shí),例如把某圖形的顏色改變,或者調(diào)整某個(gè)圖形的坐標(biāo)等,這些都無(wú)法實(shí)現(xiàn)。開(kāi)發(fā)者認(rèn)為,有一定
20、的實(shí)現(xiàn)必要來(lái)設(shè)計(jì)一款軟件, 使它不僅能完成基本的繪 制操作,而且還能對(duì)已繪制圖形進(jìn)行修改等操作。流程分析本課題首先要設(shè)計(jì)出一款繪圖軟件,能實(shí)現(xiàn)基本的圖形繪制,以及文本輸入, 然后將所繪圖形與文字轉(zhuǎn)換成相應(yīng)的指令,傳送給單片機(jī)。經(jīng)過(guò)分析, 本設(shè)計(jì)系 統(tǒng)大致工作流程如下:開(kāi)始運(yùn)行此系統(tǒng),本系統(tǒng)對(duì)應(yīng)的單片機(jī)分辨率為 640 x480。用戶可以進(jìn)行選 擇分辨率,系統(tǒng)提供了任意的分辨率供輸入選擇。在選擇好后,用戶進(jìn)入到軟件主界面,在界面的設(shè)置選項(xiàng)中,可以選擇屏幕 背景色,QT提供了一個(gè)色板,可選擇的顏色非常多。之后正式進(jìn)入本系統(tǒng)軟件,本軟件有兩種模式,專門(mén)畫(huà)圖和文本編輯的繪制 模式和專門(mén)修改圖形文本屬性
21、的修改模式。系統(tǒng)默認(rèn)進(jìn)入的是繪制模式,用戶可以在系統(tǒng)界面上選擇相應(yīng)的圖形或文本, 以及填充顏色,開(kāi)始繪制所需圖形和文本, 若想要對(duì)圖形進(jìn)行修改,則可以自行 選擇進(jìn)入系統(tǒng)的修改模式;當(dāng)用戶將所需要的圖形或文字繪制完成時(shí),再點(diǎn)擊翻譯命令,就能得到相對(duì)應(yīng)的十六進(jìn)制命令。若要對(duì)圖形進(jìn)行修改,則應(yīng)選擇修改模式進(jìn)入。本系統(tǒng)在修改模式中有兩大 特色:首先即實(shí)現(xiàn)了面向?qū)ο蟮乃枷刖幊獭?用戶繪制的圖形,文本等都有相應(yīng)的 名字和屬性框與之對(duì)應(yīng),方便用戶直觀的觀察和修改。而且對(duì)圖形修改完之后, 相應(yīng)的圖形和十六進(jìn)制命令都會(huì)自動(dòng)發(fā)生變化, 開(kāi)發(fā)者把這一種方法修改屬性的 稱為屬性框法;其二是實(shí)現(xiàn)了一種用鼠標(biāo)來(lái)拉伸,拖動(dòng)
22、圖形,以此來(lái)改變圖形屬性的方法,使得用戶對(duì)圖形的修改操作更加簡(jiǎn)潔明了,開(kāi)發(fā)者把這種方法稱為拖拽拉伸法。最后,在對(duì)繪制的圖形進(jìn)行修改之后,就要翻譯成對(duì)應(yīng)的十六進(jìn)制命令。翻 譯完成后,用戶可以通過(guò)本軟件的串口設(shè)置, 對(duì)通信參數(shù)進(jìn)行設(shè)置,并完成與單 片機(jī)的數(shù)據(jù)通信,以實(shí)現(xiàn)在機(jī)器上顯示出用戶所繪的圖形或文字。對(duì)此系統(tǒng)具體分析如下:.對(duì)于用戶來(lái)說(shuō),系統(tǒng)界面應(yīng)該是簡(jiǎn)潔明了才好,而不是一堆圖標(biāo)等,顯得 雜亂無(wú)章。所以開(kāi)發(fā)者將主要功能全部以清晰的大按鈕展示,諸如繪制各種圖形,轉(zhuǎn)換命令,發(fā)送數(shù)據(jù)等,使得用戶一目了然,而無(wú)須去尋找。而將一些小功能, 比如打開(kāi)文件,復(fù)制保存圖像等,放置在了菜單選項(xiàng)里。.對(duì)于畫(huà)布白選
23、擇,QT提供了 QGraphics View類,這就是為了繪制2D圖 形而專有的類。在Design模式中,QGraphics View相當(dāng)于一塊畫(huà)布,在QGraphics View上可以繪制各種用戶想要的基本圖形。對(duì)于開(kāi)發(fā)者來(lái)說(shuō),QT提供了 Design 模式,在其中就能對(duì)畫(huà)布的大小等參數(shù)進(jìn)行調(diào)整。而對(duì)于用戶來(lái)說(shuō),必須直觀的給予用戶一個(gè)調(diào)整大小(即分辨率)的控件。.當(dāng)用戶選擇了分辨率背景色后,就可以開(kāi)始繪制工作了。系統(tǒng)提供基本圖 形,直線,矩形,圓等的繪制,其余的圖形,如多邊形等,因?yàn)閱纹瑱C(jī)不支持它 們的命令轉(zhuǎn)換,所以沒(méi)有刻意去實(shí)現(xiàn)。而要繪制以上的圖形和文本,對(duì)于 QT來(lái) 說(shuō),也非常方便,只要
24、熟悉一下幾種調(diào)用方法就行:第一是繪制直線 drawLine(const QPoint &p1,const QPoint p2);第二是繪制矩形 drawRect(const QPoint & topLeft, const QPoint & bottomRight);第三是繪制圓 drawEllipse(const QRectF &rectangle);第四是繪制文本 drawText(const QRectF &rectangle, int flags, const QString &text, QRectF *boundingRect = Q_NULLPTR);對(duì)于繪制文本這個(gè)方法來(lái)說(shuō),其第
25、一參數(shù)指定了繪制文字所在的矩形的位置,第二參數(shù)指定了文字在矩形中的對(duì)齊方式,第三參數(shù)就是所要繪制的文字,第四參數(shù)一般用不到,不用設(shè)置。.在用戶繪制好圖形或文本后,就要開(kāi)始進(jìn)行命令轉(zhuǎn)換了。這是關(guān)鍵的一 步,如果無(wú)法轉(zhuǎn)換成命令,那么對(duì)于此次課題就沒(méi)什么太大的意義了,因?yàn)閱纹瑱C(jī)無(wú)法識(shí)別用戶具體是什么操作,也無(wú)從談起再現(xiàn)畫(huà)面顯示了。開(kāi)發(fā)者通過(guò)和用戶的溝通協(xié)商,確立了本軟件所要開(kāi)發(fā)設(shè)計(jì)的各項(xiàng)功能,并且規(guī)定了這些功能所對(duì)應(yīng)的命令。下面列出幾個(gè)用戶最為常用,也是本系統(tǒng)中較為重要的幾個(gè)命令:1B 46 X1,Y1,X2,Y2,C:此命令為畫(huà)一條直線,其中(X1,Y1)表示起點(diǎn),(X2,Y2)表示終點(diǎn);C為直線
26、顏色;1B 5A X1,Y1,X2,Y2,C:此命令為畫(huà)一個(gè)空心矩形,其中(X1,Y1)表示左上角坐標(biāo),(X2,Y2)表示右下角坐標(biāo),C為矩形框顏色;1B 41 X1,Y1,X2,Y3c該此命令為畫(huà)一個(gè)實(shí)心矩形,其中(X1,Y1)表示左上角坐標(biāo),(X2,Y2)表示右下角坐標(biāo),C為填充顏色;1B 59 X,Y,R,C:該此命令為畫(huà)一個(gè)圓,其中(X,Y)表示圓心,R表示半徑,C表示弧顏色;對(duì)于文本,也有相應(yīng)的命令,不過(guò)在轉(zhuǎn)換的時(shí)候,需要注意輸入的是中 文還是英文,兩種字符的轉(zhuǎn)換方式也不盡相同。中文是對(duì)應(yīng)的標(biāo)準(zhǔn)國(guó)標(biāo)碼,而西文則直接轉(zhuǎn)換成ASCII碼就可以。注意的是,中文是占據(jù)兩個(gè)字節(jié),而英文則只 占
27、一個(gè)字節(jié)空間。而沒(méi)有提到的命令,后續(xù)會(huì)在最后附上一張附錄表,以供參考。.對(duì)于已經(jīng)繪制好的圖形或者文本, 用戶可能會(huì)不太滿意想要修改一下。 但 是據(jù)開(kāi)發(fā)者觀察,其他的畫(huà)面生成軟件對(duì)這方面的支持不是特別好, 所以開(kāi)發(fā)者 著重開(kāi)發(fā)了屬性修改模塊。在該模塊中,開(kāi)發(fā)者設(shè)計(jì)了兩種改變屬性的方法:其一是拖拽拉伸法,顧名思義就是利用鼠標(biāo)去拖拉圖形,以此來(lái)達(dá)到位置, 大小改變的目的,開(kāi)發(fā)者利用的方法就是為每個(gè)圖形都設(shè)置八個(gè)點(diǎn),即為8個(gè)方向,憑此八個(gè)點(diǎn)來(lái)監(jiān)聽(tīng)圖形的變化,并且對(duì)此8個(gè)方向進(jìn)行一系列的變化計(jì)算以此來(lái)獲得圖形的變化其二是屬性框法,這個(gè)方法相對(duì)簡(jiǎn)單,就是在對(duì)應(yīng)圖形的屬性欄里直接修改 數(shù)值,圖形就會(huì)變化了。
28、為了達(dá)到美觀的要求,開(kāi)發(fā)者使用了QTableWidget+SpinBoxDelegation的組合(即數(shù)值更改使用上下箭頭的樣式)。.繪制完圖形后,翻譯生成代碼命令,最后一步是通過(guò)通信口去發(fā)送指令。 在這一塊中,開(kāi)發(fā)者主要就是調(diào)用了 QT中的QlOdevice類,它是標(biāo)準(zhǔn)的QT自 帶的通信接口,滿足了通信的基本要求。然后設(shè)置了一個(gè)對(duì)話框來(lái)對(duì)通信的各個(gè) 參數(shù)加以設(shè)置,如波特率,傳輸時(shí)延等,完成這一系列設(shè)置后,就可以開(kāi)始通信 了。3系統(tǒng)總體設(shè)計(jì)本章主要介紹了以下幾點(diǎn)內(nèi)容:首先對(duì)本軟件的開(kāi)發(fā)思想和原則進(jìn)行了闡述; 其次對(duì)本系統(tǒng)的開(kāi)發(fā)所要達(dá)成的目標(biāo)以及所使用的設(shè)計(jì)語(yǔ)言進(jìn)行了說(shuō)明;最后給出了系統(tǒng)總體結(jié)構(gòu)
29、圖,并分別對(duì)各個(gè)結(jié)構(gòu)模塊進(jìn)行簡(jiǎn)單描述。開(kāi)發(fā)原則本系統(tǒng)首先是根據(jù)用戶需求特別打造的,以用戶最后的評(píng)價(jià)和滿意度為主。 所以面向用戶,以用戶的需求觀點(diǎn)進(jìn)行開(kāi)發(fā)是本軟件系統(tǒng)所追求的目標(biāo)。其次面對(duì)一個(gè)完整大型項(xiàng)目系統(tǒng)的開(kāi)發(fā), 應(yīng)該秉持這樣的思想,即將整個(gè)系 統(tǒng)軟件的開(kāi)發(fā)過(guò)程分割成相應(yīng)的小階段。再者,每個(gè)階段又能細(xì)分為各個(gè)小步驟。 所劃分的各個(gè)階段和步驟必須要有明確的目標(biāo)。 若是這樣合理安排的話,系統(tǒng)開(kāi) 發(fā)條理更加清晰,邏輯更加分明,更易于系統(tǒng)的制定和開(kāi)發(fā)。接著開(kāi)發(fā)者在本系統(tǒng)中融入了模塊化思想, 模塊化思想即將所要開(kāi)發(fā)的系統(tǒng) 軟件劃分為不盡相同的各個(gè)功能模塊。劃分的各個(gè)模塊都能相應(yīng)的實(shí)現(xiàn)軟件的一 個(gè)特定功
30、能。各個(gè)模塊間既保持獨(dú)立性,但也不失一定的耦合性,以便于以后對(duì)本系統(tǒng)的擴(kuò)充,維護(hù)等。此設(shè)計(jì)思想,可以為整個(gè)系統(tǒng)軟件的順利開(kāi)發(fā)打下堅(jiān)實(shí) 的地基。最后,開(kāi)發(fā)者基于快速原形思想來(lái)完成軟件的開(kāi)發(fā)。快速原形法是一種重要 且實(shí)用的設(shè)計(jì)法,也是本系統(tǒng)設(shè)計(jì)的一個(gè)主要方法。它從用戶觀念出發(fā),根據(jù)用戶需求,開(kāi)發(fā)者參與討論,設(shè)計(jì)出大致藍(lán)圖,并能建立一個(gè)實(shí)驗(yàn)性的基礎(chǔ)系統(tǒng)模 型在較短的時(shí)間內(nèi),隨后根據(jù)用戶的使用以及意見(jiàn)改進(jìn), 對(duì)實(shí)驗(yàn)?zāi)P瓦M(jìn)行精雕細(xì) 琢,直到滿足用戶,這樣便形成一個(gè)穩(wěn)定、理想的畫(huà)圖系統(tǒng)軟件??焖僭畏ǖ姆椒ǖ闹饕獌?yōu)點(diǎn)有:.所需解決的問(wèn)題都圍繞一個(gè)較小的實(shí)驗(yàn)?zāi)P驼归_(kāi), 大大方便了開(kāi)發(fā)人員的 工作。.通過(guò)對(duì)實(shí)
31、驗(yàn)?zāi)P秃陀脩艚涣?,能讓開(kāi)發(fā)人員跟多的去挖掘潛在的問(wèn)題, 從 而不斷的修改,完善系統(tǒng),最后完成開(kāi)發(fā)。.對(duì)于系統(tǒng)開(kāi)發(fā)來(lái)說(shuō),其效率較高??焖僭偷拈_(kāi)發(fā)周期短、開(kāi)發(fā)過(guò)程靈活、 通過(guò)對(duì)用戶的交流,易于修改,這對(duì)一個(gè)大型的,不太穩(wěn)定的系統(tǒng)來(lái)說(shuō)是適合的。.系統(tǒng)的可擴(kuò)性優(yōu)越,因?yàn)榇朔椒ㄊ峭ㄟ^(guò)不斷的提升修改來(lái)完善系統(tǒng),和可擴(kuò)展性相呼應(yīng),更加易于系統(tǒng)的擴(kuò)展。系統(tǒng)設(shè)計(jì)要點(diǎn)本節(jié)首先介紹了本軟件的基本開(kāi)發(fā)目標(biāo), 即所要完成的基本功能;其次對(duì)所 用的開(kāi)發(fā)語(yǔ)言的選擇進(jìn)行了說(shuō)明;最后是對(duì)代碼設(shè)計(jì)的基本要求。系統(tǒng)開(kāi)發(fā)基本目標(biāo)本系統(tǒng)軟件實(shí)際上是一款專業(yè)的定制軟件,它的開(kāi)發(fā)目標(biāo)是解決用戶(無(wú)需 了解硬件如何工作)如何簡(jiǎn)便的在擁有
32、TFT屏的設(shè)備上自行設(shè)計(jì)界面。本系統(tǒng)軟件擬將完成以下基本目標(biāo):.滿足用戶繪制圖形的需求,即繪制基本圖形或文本,填充顏色等操作;.對(duì)已繪制的圖形可以進(jìn)行屬性修改操作;.將修改完成的圖形翻譯成設(shè)備能理解的十六進(jìn)制代碼命令;.設(shè)置通信參數(shù),完成與單片機(jī)的連接,數(shù)據(jù)傳輸。以上目標(biāo)為本軟件的必要基本目標(biāo), 在此基礎(chǔ)上,還可以進(jìn)行進(jìn)一步的開(kāi)發(fā) 操作。軟件設(shè)計(jì)語(yǔ)言本系統(tǒng)軟件擬采用QT系列進(jìn)行開(kāi)發(fā),QT編程所需語(yǔ)言需要C+編程基礎(chǔ)。 C+語(yǔ)言是在廣為流傳經(jīng)典的C語(yǔ)言基礎(chǔ)上發(fā)展起來(lái)的,再繼承了 C語(yǔ)言的各種 優(yōu)勢(shì)的同時(shí),又加入了面向?qū)ο蟮木幊趟枷耄@使得它對(duì)于不管是開(kāi)發(fā)人員, 還是用戶,都有良好的親和力。開(kāi)發(fā)者
33、也對(duì)比了同樣可以用來(lái)開(kāi)發(fā)的 MFC或者Delphi,發(fā)現(xiàn)了幾點(diǎn)不足首先是MFC,雖說(shuō)它也是基于 C+封裝的API,但是其無(wú)法實(shí)現(xiàn)跨平臺(tái)特 性。而對(duì)于Delphi來(lái)說(shuō),其使用的是Pascal語(yǔ)言,但相對(duì)于面向?qū)ο蟮?C+語(yǔ) 言來(lái)說(shuō)優(yōu)勢(shì)不大。系統(tǒng)代碼設(shè)計(jì)說(shuō)明進(jìn)行本軟件的代碼編寫(xiě)時(shí),遵循了以下幾個(gè)原則:.確定性:在本軟件中,每一行代碼和每一種對(duì)象都是明確的,沒(méi)有模糊的 含義。.標(biāo)準(zhǔn)性:這主要表現(xiàn)在對(duì)各個(gè)對(duì)象的標(biāo)準(zhǔn)命名,以準(zhǔn)確表達(dá)出其含義與內(nèi)容,方便開(kāi)發(fā)人員研讀改進(jìn)。.合理性:軟件中設(shè)計(jì)的代碼和對(duì)象一一對(duì)應(yīng),有理有據(jù)。.可擴(kuò)充性:考慮今后軟件可能會(huì)有擴(kuò)充的可能, 保留了一定的預(yù)留空間與 代碼。系統(tǒng)總體
34、結(jié)構(gòu)設(shè)計(jì)本節(jié)是此章的最后一塊內(nèi)容,其中包含了兩個(gè)部分:首先是給出了系統(tǒng)的整 體結(jié)構(gòu)圖和功能模塊圖;其次是根據(jù)功能結(jié)構(gòu)圖上劃分的模塊,逐一進(jìn)行描述。結(jié)構(gòu)圖本系統(tǒng)總體流程為用戶在PC端上繪制圖形界面,再通過(guò)串口發(fā)送給單片機(jī), 最后在單片機(jī)的TFT屏上顯示出相應(yīng)的畫(huà)面。具體的系統(tǒng)結(jié)構(gòu)圖如下所示:PC端TFT屏顯示畫(huà)面PC端讀取分析數(shù)據(jù)由單片機(jī)設(shè)備圖3.1系統(tǒng)總體結(jié)構(gòu)圖整個(gè)系統(tǒng)又由分工明確的幾大模塊構(gòu)成。本系統(tǒng)功能模塊結(jié)構(gòu)如圖3.2所示:用戶界面自動(dòng)生成軟件編輯繪制翻譯轉(zhuǎn)換圖 形 繪 制翻譯圖形并添加命令文字編輯翻譯文本并添加命令通信管理屬 性 框 法 修 改設(shè) 置 通 信 口 參 數(shù)開(kāi)始通信結(jié)束通信
35、拖拽拉伸法修改編輯繪制翻譯轉(zhuǎn)換圖 形 繪 制翻譯圖形并添加命令文字編輯翻譯文本并添加命令通信管理屬 性 框 法 修 改設(shè) 置 通 信 口 參 數(shù)開(kāi)始通信結(jié)束通信拖拽拉伸法修改圖3.2功能模塊結(jié)構(gòu)圖系統(tǒng)模塊設(shè)計(jì)本系統(tǒng)米用QT進(jìn)行開(kāi)發(fā),語(yǔ)百為C+。本軟件可劃分為四大主要模塊:它們分別是編輯繪制,翻譯轉(zhuǎn)換模塊,屬性 修改模塊和通信管理模塊。其中,開(kāi)發(fā)者將編輯繪制,翻譯轉(zhuǎn)換,通信管理歸為三大主要功能模塊,是 組成本系統(tǒng)不可缺少的,而屬性修改模塊則是本系統(tǒng)的一大特色模塊,與其他三 個(gè)模塊相輔相成,很好的滿足了面向?qū)ο蟮奶攸c(diǎn)。止匕外,開(kāi)發(fā)者設(shè)計(jì)了兩個(gè)模式,繪制模式與修改模式,目的是能使用戶更直 觀的繪圖與
36、修改。顯然,編輯繪制模塊運(yùn)行于繪制模式,屬性修改模塊運(yùn)行于修 改模式,其他兩個(gè)模塊則皆可運(yùn)行與任意模式。系統(tǒng)模塊的具體設(shè)計(jì)如下:.編輯繪制模塊:該模塊的功能主要就是讓用戶完成基本圖形或者文字的繪 制。首先,用戶進(jìn)入到系統(tǒng)后,可以在菜單選項(xiàng)中選擇更改分辨率和背景色,選 擇適合自己的樣式來(lái)進(jìn)行繪制。其次, 系統(tǒng)默認(rèn)的就是繪制模式,即允許用戶繪 制圖形,而暫時(shí)不允許用戶修改,除非用戶自行進(jìn)入修改模式。選擇完成后,在 畫(huà)布上,用戶可以開(kāi)始繪制圖形或文本。這里提供了直線,矩形,圓這些基本圖 形,另外為了方便用戶,也添加了橢圓和多邊形的選項(xiàng), 但是本系統(tǒng)對(duì)應(yīng)的單片 機(jī)無(wú)對(duì)應(yīng)命令。對(duì)于文本輸入,則是提供了文
37、本框在畫(huà)布上進(jìn)行操作, 用戶也可 以按照喜好來(lái)選擇圖形的顏色或選擇文字的各種樣式。最后,在本系統(tǒng)上也添加了清屏選項(xiàng),可以將用戶繪制的所有圖形或文本全部清空。此模塊的結(jié)構(gòu)圖如圖3.3所示:選擇畫(huà)筆顏色和填充顏色選擇文字樣式和顏色選擇分辨率選擇背景色清 空 屏 幕選擇畫(huà)筆顏色和填充顏色選擇文字樣式和顏色選擇分辨率選擇背景色清 空 屏 幕圖3.3編輯繪制模塊.翻譯轉(zhuǎn)換模塊:此模塊的功能就是將用戶繪制的圖形或者文本, 翻譯成單 片機(jī)能識(shí)別的十六進(jìn)制命令。需要注意的是圖形翻譯方面調(diào)用不同的翻譯命令就 行,但是在文本方面,必須明確輸入的是否是中文還是英文,因?yàn)檫@兩種文字在計(jì)算機(jī)中的表示是不同的,不能一概而
38、論。 最后全部繪制完成后,點(diǎn)擊軟件上的 添加命令,就可以將各個(gè)命令添加進(jìn)顯示表格中。此模塊的結(jié)構(gòu)圖如圖3.4所示:翻譯圖形并生成命令翻譯轉(zhuǎn)換模塊翻譯文本并生成命令翻 譯 直 線翻譯實(shí)體矩形翻譯空心矩形翻譯圓翻譯中文文字翻譯英文文字或數(shù)字翻譯圖形并生成命令翻譯轉(zhuǎn)換模塊翻譯文本并生成命令翻 譯 直 線翻譯實(shí)體矩形翻譯空心矩形翻譯圓翻譯中文文字翻譯英文文字或數(shù)字圖3.4翻譯轉(zhuǎn)換模塊.屬性修改模塊:該模塊是本軟件中很有特色的一個(gè)模塊。 此模塊很好的滿 足了本軟件的面向用戶的思想,給予用戶最直觀的繪制體驗(yàn)。開(kāi)發(fā)者研讀了其他開(kāi)發(fā)者設(shè)計(jì)的相關(guān)軟件,發(fā)現(xiàn)在面向?qū)ο筮@方面做的還不 完善,無(wú)法給用戶直觀的體驗(yàn)。有
39、些微小的圖標(biāo)選項(xiàng)的含義必須得將鼠標(biāo)放置在 上面才能顯示,這樣就已經(jīng)很不方便了。 而且畫(huà)出的圖形,也沒(méi)有對(duì)應(yīng)的名字來(lái) 辨別或者能用鼠標(biāo)去選中,這樣的話, 一旦圖形堆積起來(lái),用戶根本無(wú)法分清哪 個(gè)圖形是自己想要的。再有就是他們對(duì)圖形的屬性修改也處理的不是很好,無(wú)法讓用戶直觀的去修改圖形,來(lái)達(dá)到一個(gè)滿意的效果,但就其他方面來(lái)說(shuō),這些軟件還是很優(yōu)秀的。在這個(gè)模塊中,顧名思義,就是對(duì)已繪制圖形或文本進(jìn)行屬性修改。用戶進(jìn)入修改模式,在該模式中,禁止了用戶的繪制操作,轉(zhuǎn)而允許用戶對(duì) 畫(huà)布上的圖形或文字做各種修改。為此, 開(kāi)發(fā)者嵌入了一個(gè)屬性框,以便直觀的 展示用戶各個(gè)圖形的數(shù)據(jù)。著重要講解的就是在修改模式中
40、,開(kāi)發(fā)者設(shè)計(jì)了兩種修改的方法,第一種是 拖拽拉伸法,也就是允許用戶選中某個(gè)已經(jīng)在畫(huà)布上繪制好的圖形, 直接用鼠標(biāo) 拖拽可以改變圖形的位置坐標(biāo),也可以用鼠標(biāo)對(duì)圖形進(jìn)行拉伸縮放 ,以此來(lái)改變 圖形的大小。第二種方法就是屬性框法,也就是在選中圖形的屬性框中直接修改數(shù)值,比如直線就是修改起點(diǎn),終點(diǎn)的位置,圓就是修改半徑,以及各種顏色等;這兩種方法修改圖形或文本的屬性, 都能實(shí)時(shí)的在屬性框中觀察到,而且修 改完后,相應(yīng)的翻譯命令也會(huì)跟著改變,可以說(shuō)很好的滿足了面向?qū)ο蟮男枨?。屬性修改模塊的結(jié)構(gòu)如圖3.5所示:鼠 標(biāo) 拖 拽 圖 形改 變 位 置 坐 標(biāo)鼠 標(biāo) 拉 伸 縮 放 圖 形改 變 大 小拖拽拉伸
41、法屬性框法屬性修改模塊鼠 標(biāo) 拖 拽 圖 形改 變 位 置 坐 標(biāo)鼠 標(biāo) 拉 伸 縮 放 圖 形改 變 大 小拖拽拉伸法屬性框法屬性修改模塊屬性框中直接修改圖形屬性圖3.5屬性修改模塊.通信管理模塊:此模塊主要就是實(shí)現(xiàn)計(jì)算機(jī)與所需單片機(jī)的數(shù)據(jù)通信與傳輸。本項(xiàng)目采用的均為標(biāo)準(zhǔn)的 RS232通信方式。其數(shù)據(jù)格式標(biāo)準(zhǔn)為:1個(gè)起始位(低電平),8個(gè)數(shù)據(jù)位(低位在前,高位在后),1個(gè)停止位(高電平)。各個(gè)參數(shù)也必須在通信前進(jìn)行設(shè)置,如波特率,數(shù)據(jù)位數(shù),奇偶校驗(yàn),傳輸時(shí)延等,否則無(wú)法正常通信。該模塊結(jié)構(gòu)如圖 3.6所示:通信管理模塊設(shè)置串 口參數(shù)結(jié) 束 通 信開(kāi) 始 通 信結(jié) 束 通 信圖3.6通信管理模
42、塊4模塊詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)本章就本軟件四大模塊展開(kāi),分別對(duì)四大模塊的設(shè)計(jì)與實(shí)現(xiàn)由簡(jiǎn)到詳進(jìn)行描 述。編輯繪制模塊本節(jié)主要描述編輯繪制模塊的功能與詳細(xì)實(shí)現(xiàn)思路。編輯繪制模塊功能需求編輯繪制模塊是本軟件三大功能模塊之一。本系統(tǒng)模塊應(yīng)有四大功能需求:即首先可以進(jìn)行分辨率,屏幕背景色的選擇;其次可以完成文本的編輯;然后可以進(jìn)行基本圖形的繪制,如直線,矩形等,還可以選擇它們的顏色;最后是可以 進(jìn)行清屏操作。編輯繪制模塊功能圖編輯繪制模塊的功能圖如圖4.1所示:指定矩形區(qū)域的文本輸入,并可以選擇文本樣式等編輯繪制模塊對(duì)各種基本圖形的繪制操作指定矩形區(qū)域的文本輸入,并可以選擇文本樣式等編輯繪制模塊提供任意分辨率,
43、背景色的選擇對(duì)屏幕上的各種內(nèi)容進(jìn)行清空?qǐng)D4.1編輯繪制模塊功能編輯繪制模塊詳細(xì)設(shè)計(jì)本模塊主要功能是進(jìn)行各種基本圖形的繪制,繪圖全程操作都是基于鼠標(biāo)事 件來(lái)繪制圖形,且運(yùn)行于繪制模式下??傮w上來(lái)說(shuō),繪圖就是依靠鼠標(biāo)的三個(gè)事件來(lái)完成,即鼠標(biāo)按下事件;鼠標(biāo) 移動(dòng)事件;鼠標(biāo)松開(kāi)事件。.鼠標(biāo)按下事件在此事件中,主要完成了以下 4步過(guò)程:(1)判斷用戶選擇的是何種繪圖圖形,其思想就是設(shè)置一個(gè)字符 Text,和 本軟件的圖形選擇按鈕相關(guān)聯(lián),當(dāng)用戶按下按鈕選擇了某個(gè)圖形,則會(huì)判斷按鈕 中的文本為何種圖形,然后可以再在調(diào)色板中選擇圖形顏色;(2)記錄下起始點(diǎn)坐標(biāo),即圖形從哪個(gè)位置開(kāi)始繪制;(3)添加新的圖形It
44、em項(xiàng)目到相應(yīng)的集合中。例如直線的話,就是歸到直 線集合中,第一條直線就取名為line0,以此類推,這樣做的目的就是為了實(shí)現(xiàn) 面向?qū)ο?,能使用戶分辨自己選擇的是哪個(gè)圖形;(4)發(fā)送信號(hào)給屬性框,讓其做出相應(yīng)的Item項(xiàng)目更新,也就是在屬性框 中添加繪制的圖形各種屬性信息;(5)對(duì)于各個(gè)圖形,都提供了是否實(shí)心還是空心的選項(xiàng), 即用了 bool型變 量,并調(diào)用bool isSolid=widget-isSolid()來(lái)判斷。但對(duì)于命令翻譯來(lái)說(shuō),只有矩 形用得到,若選擇實(shí)心,則填充整個(gè)圖形,若選擇空心,則填充邊界;其流程圖如下所示:實(shí)心空心圖實(shí)心空心圖4.2 繪制圖形流程圖其主要代碼如下(以選擇直線
45、為例):QString text= widget-groupTool-checkedButton()-text();判斷何種圖形 bool isSolid=widget-isSolid();/ 是否空心還是實(shí)心if(text=QTEXT(直線)/選擇直線,執(zhí)行4步過(guò)程 this-currentTool=Line;QGraphicsLineItem*lineItem=this-addLine(0,0,0,0,QPen(widget-color);/ 記錄初 始點(diǎn)lineItem-setAcceptedMouseButtons(Qt二LeftButton);lineItem-setFlag(QGr
46、aphicsItem:ItemIsMovable);lineItem-setFlag(QGraphicsItem二ItemIsSelectable);this-lines.append(lineItem);/歸入直線集合lineItem-moveBy(event-scenePos().x(),event-scenePos().y();emit newLineAdded(lineItem,this-lines.size()-1);發(fā)射信號(hào),讓其添加進(jìn)屬性框其運(yùn)行效果如下圖所示:II圖4.3繪制直線并添加進(jìn)屬性框* 汨網(wǎng)口小鵬編由審II圖4.3繪制直線并添加進(jìn)屬性框* 汨網(wǎng)口小鵬編由審圖4.4繪制
47、空心矩形并添加進(jìn)屬性框TH; iif mTMTH; iif mTM圖4.5繪制實(shí)心矩形并添加進(jìn)屬性框.鼠標(biāo)移動(dòng)事件此事件負(fù)責(zé)的主要功能是根據(jù)當(dāng)前工具和起始坐標(biāo),計(jì)算出圖像的外界矩形,并以之修改形狀。具體的來(lái)說(shuō)就是:(1)先用Sw讓chCase語(yǔ)句來(lái)判斷用戶繪制的是哪一種圖形;(2)若為直線,則調(diào)用 SetLine函數(shù)來(lái)捕獲坐標(biāo),若是其他圖形,則調(diào)用 SetRect函數(shù),即它們的外接矩形,來(lái)捕獲坐標(biāo)。因?yàn)槌酥本€,其余的圖形的 繪制都是根據(jù)外接矩形來(lái)繪制的;(3)根據(jù)坐標(biāo)的變化,來(lái)改變圖形;其主要代碼如下:switch(this-currentTool)分支選擇 (case Line:/直線QG
48、raphicsLineItem*item=this-lines.last();item-setLine(QLineF(QPointF(0,0),event-scenePos()-startPointF);/ 調(diào)用 SetLine 函數(shù)emit newLineAdded(item,this-lines.size()-1);break;case Rectangle:/慶巨形QGraphicsRectItem*item=this-rectangles.last();item-setRect(QRectF(0,0,(event-scenePos()-startPointF).x(),(event-sc
49、enePos( )-startPointF).y().normalized();調(diào)用 SetRect函數(shù)emit newRectangleAdded(item,this-rectangles.size()-1);break;case Circle:圓QGraphicsEllipseltem*讓em=this-circles.last();floatr=powf( (event-scenePos().x()-startPointF.x()*(event-scenePos().x()-startPoi ntF.x()+(event-scenePos().y()-startPointF.y()*(e
50、vent-scenePos().y()-startPointF.y(),0.5);item-setRect(0,0,2*r,2*r);item-setPos(2*startPointF-event-scenePos();emit newCircleAdded(item,this-circles.size()-1);break;case 曰lipse:/橢圓QGraphicsEllipseItem*item=this-ellipses.last();item-setRect(0,0,2*(event-scenePos().x()-startPointF.x(),2*(event-scenePos
51、( ).y()-startPointF.y();item-setPos(2*startPointF-event-scenePos();emit newEllipseAdded(item,this-ellipses.size()-1);break;case Polygon:/多邊形自帶調(diào)整break;case Text:/文本矩形框自帶調(diào)整break;.鼠標(biāo)松開(kāi)事件該事件在只有使用多邊形工具的時(shí)候才用到,因?yàn)樵?QT中,繪制多邊形,是在畫(huà)布上點(diǎn)擊鼠標(biāo),并且松開(kāi)后,系統(tǒng)才開(kāi)始繪制多邊形的一個(gè)點(diǎn)集。具體完成的操作如下:(1)獲取當(dāng)前多邊形對(duì)象;(2)為其添加點(diǎn)集;(3)發(fā)送信號(hào)提醒屬性框更新。其實(shí)現(xiàn)
52、的代碼如下:QGraphicsPolygonItem*item=this-polygons.last();ygonF polygon=item-polygon();/獲取對(duì)象 polygon.appenQPold( item-mapFromScene(event-scenePos();添力口點(diǎn)集item-setPolygon(polygon);emit newPolygonAdded(item,this-polygons.size()-1);儂射信號(hào)其運(yùn)行效果如圖4.6:圖4.6繪制多邊形本模塊中的第二個(gè)部分,就是文本的編輯,這一功能相對(duì)來(lái)說(shuō)就簡(jiǎn)單。因?yàn)镼T中提供了此類封裝函數(shù)。其主要思想就是
53、在畫(huà)布上調(diào)用文本編 輯函數(shù),用到了 QLineEdit類,具提供了單行文字的編輯功能,即提供了一個(gè) 矩形框,用戶可以在其中輸入文字。若想使用多行編輯,則可以使用QTextEdit來(lái)創(chuàng)建對(duì)象,進(jìn)行編輯。文本編輯的具體操作如下:(1)選擇文字編輯;(2)在鼠標(biāo)點(diǎn)擊的地方生成一個(gè)QLineEdit,(生成的矩形框高度和寬度都是由用戶選擇的的字體設(shè)置決定的);(3)編輯完成后(焦點(diǎn)離開(kāi),或者按下enter鍵),添加真正的QGraphicsSimpleText 對(duì)象。(4)其運(yùn)行效果如圖4.7:鼻腦享(4)其運(yùn)行效果如圖4.7:鼻腦享圖4.7文本編輯本模塊中的第三個(gè)部分就是提供分辨率和背景色給用戶選擇。
54、用戶進(jìn)入系統(tǒng)后,可以在菜單設(shè)置中選擇畫(huà)布大小來(lái)改變分辨率,提供了任 意分辨率的修改。也可以選擇任意顏色來(lái)作為背景色。其思想就是在菜單選項(xiàng)中添加一個(gè)畫(huà)布大小,一個(gè)背景色選項(xiàng),然后為這個(gè)選項(xiàng)添加一個(gè)觸發(fā)器,可以觸發(fā)setSceneRect函數(shù),即分辨率設(shè)置函數(shù),以及QColorDialog函數(shù),即調(diào)色板函數(shù)。這兩個(gè)是 QT自帶的函數(shù)。但為了讓畫(huà)布使 用這些函數(shù),必須創(chuàng)建畫(huà)布QGraphicsScene的對(duì)象來(lái)調(diào)用它們,否則是沒(méi)有效果 的。其具體操作如下:(1)點(diǎn)擊菜單設(shè)置中的畫(huà)布大??;(2)設(shè)置分辨率。其運(yùn)行結(jié)果如圖4.8 :|r ERSWt M工”圖4.8.分辨率,背景色的選擇本模塊的最后一個(gè)功
55、能,也就是清屏功能,其實(shí)現(xiàn)的原理就是移除所有的圖 形,文本的Item項(xiàng)目,并且清除它們的屬性信息。其實(shí)現(xiàn)代碼如下:this-scene-clear();/青除畫(huà)布上的 Item, this 指代畫(huà)布 int nRow=ui-itemProperties-rowCount();for(int i=0;iitemProperties-removeRow(0);其運(yùn)行效果如下圖:iDK圖4.9清屏后畫(huà)面4.2翻譯轉(zhuǎn)換模塊本節(jié)主要描述翻譯轉(zhuǎn)換模塊的功能與詳細(xì)實(shí)現(xiàn)步驟。翻譯轉(zhuǎn)換模塊功能需求翻譯轉(zhuǎn)換模塊是本軟件三大功能模塊之一。本系統(tǒng)模塊的主要需求是完成對(duì) 文本,圖形的翻譯操作,最后點(diǎn)擊添加命令,能將命令
56、顯示到屏幕上。翻譯轉(zhuǎn)換模塊功能圖翻譯轉(zhuǎn)換模塊的功能圖如圖4.10所示:圖4.10 翻譯轉(zhuǎn)換模塊功能翻譯轉(zhuǎn)換模塊之詳細(xì)設(shè)計(jì)首先第一個(gè)部分是圖形翻譯功能,此模塊的功能是將繪制的圖形翻譯成與之 對(duì)應(yīng)的十六進(jìn)制代碼,只有這樣才能讓單片機(jī)識(shí)別。在此功能中,繪制的圖形已經(jīng)記錄在了屬性表格中, 只要將屬性表中對(duì)應(yīng)的 圖形屬性提取出來(lái),并且轉(zhuǎn)換成指令就可以了。其具體步驟如下:.從框中提取所需的屬性;.轉(zhuǎn)換成十六進(jìn)制代碼;具體的提取翻譯方法就是在用戶繪制的圖形中,當(dāng)用戶選中一個(gè)圖形后, 并且按下添加命令按鈕后,根據(jù)圖形的文本屬性和索引號(hào)判斷選中的是哪一個(gè)圖 形,然后每個(gè)圖形都有其對(duì)應(yīng)的屬性,比如直線就是起點(diǎn),終
57、點(diǎn)坐標(biāo),顏色;矩 形就是就是左上角,右下角坐標(biāo)色等, 創(chuàng)建一個(gè)對(duì)應(yīng)圖形的屬性對(duì)象,用該對(duì)象 去提取所需的屬性。之后就是將所提取的數(shù)據(jù)直接轉(zhuǎn)換成十六進(jìn)制就行了,并且加上識(shí)別的標(biāo) 志,比如1B 46是直線,1B 41是實(shí)心矩形等。最后設(shè)計(jì)了一個(gè)添加命令按鈕,點(diǎn)擊按鈕,將轉(zhuǎn)換完的數(shù)據(jù)用 ui對(duì)象(即 設(shè)計(jì)模式中創(chuàng)建的實(shí)例)指向,添加到設(shè)計(jì)的 TextEdit (即文本顯示框)中就會(huì) 在系統(tǒng)屏幕上顯示出命令。在此,開(kāi)發(fā)者主要實(shí)現(xiàn)了以下幾條命令的翻譯:伯 46X1 V1 X2Y2C畫(huà)線僅Lyl上較始點(diǎn)坐標(biāo)蟋止點(diǎn)坐標(biāo)匚顏色 xly 1 sitemProperties-item(0,0)-text();if
58、(str.startsWith(line)/ 何種圖形int index=str.mid(4).toInt();/ 索引QGraphicsLineItem*item=this-scene-lines.at(index);QString str=QString(1B 46 %1 %2 %3 %4 %5)直線命令.arg( QString二number(int)item-scenePos().x(),16).arg( QString二number(int)item-scenePos().y(),16).arg( QString二number(int)(item-scenePos().x()+ite
59、m-line().p2().x(),16).arg( QString二number(int)(item-scenePos().y()+item-line.arg(QString:number(item-pen().color().value(),16);Jstr.prepend(QString(line%1: ).arg(index);/提取所需屬性u(píng)i-orders_textEdit-appendPlainText(str.append( n);/傣力口至 5 顯示 框中其運(yùn)行效果如下幾圖所示:圖4.12翻譯直線圖4.13翻譯矩形圖4.14翻譯圓形第二個(gè)部分是文本翻譯功能,此模塊的功能是將添
60、加的文本翻譯成與之對(duì)應(yīng) 的十六進(jìn)制代碼,以此讓單片機(jī)識(shí)別。其完成的步驟如下:(1)從屬性框中提取文本;(2)判斷是中文還是英文;(3)翻譯成命令。其大致步驟和翻譯圖形差不多,就是翻譯的對(duì)象改成了文本,要遵循文本的 翻譯規(guī)則。其實(shí)現(xiàn)流程圖如下圖:圖4.15文本翻譯流程其思路就是在文本屬性框中,首先創(chuàng)建文本的對(duì)象從屬性框中提取出文本的顏色,以及文本的長(zhǎng)度,因?yàn)檫@些參數(shù)都已經(jīng)在繪制的時(shí)候保存在屬性框中了。轉(zhuǎn)換為對(duì)應(yīng)的十六進(jìn)制,若文字最高位為 1,則判斷為中文,其余的則為西文。值得注意的是漢字文本占據(jù)兩個(gè)字節(jié), 而西文只占據(jù)一個(gè)字節(jié),在計(jì)算長(zhǎng)度 的時(shí)候是需要注意的,以免計(jì)算錯(cuò)誤。1B61 ND打印字符
溫馨提示
- 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ùn)信息規(guī)范 第4部分:數(shù)據(jù)報(bào)文接口
- 寵物健康監(jiān)測(cè)設(shè)備市場(chǎng)現(xiàn)狀分析
- 教育體系與家長(zhǎng)教育的互動(dòng)發(fā)展探討
- 2025年粵教版八年級(jí)歷史上冊(cè)階段測(cè)試試卷
- 2025年滬科版九年級(jí)歷史上冊(cè)階段測(cè)試試卷含答案
- 2025年滬科版選擇性必修1語(yǔ)文上冊(cè)月考試卷含答案
- 年產(chǎn)4000萬(wàn)個(gè)塑料泵頭項(xiàng)目可行性研究報(bào)告寫(xiě)作模板-申批備案
- 2025年西師新版必修3生物下冊(cè)階段測(cè)試試卷
- 2025年滬教版必修1歷史上冊(cè)月考試卷含答案
- 二零二五版苗圃土地租賃與生態(tài)農(nóng)業(yè)示范區(qū)建設(shè)合同4篇
- 勞務(wù)協(xié)議范本模板
- 2024年全國(guó)職業(yè)院校技能大賽高職組(生產(chǎn)事故應(yīng)急救援賽項(xiàng))考試題庫(kù)(含答案)
- 2025大巴車(chē)租車(chē)合同范文
- 老年上消化道出血急診診療專家共識(shí)2024
- 人教版(2024)數(shù)學(xué)七年級(jí)上冊(cè)期末測(cè)試卷(含答案)
- 2024年國(guó)家保密培訓(xùn)
- 2024年公務(wù)員職務(wù)任命書(shū)3篇
- CFM56-3發(fā)動(dòng)機(jī)構(gòu)造課件
- 會(huì)議讀書(shū)交流分享匯報(bào)課件-《殺死一只知更鳥(niǎo)》
- 2025屆撫州市高一上數(shù)學(xué)期末綜合測(cè)試試題含解析
- 公司印章管理登記使用臺(tái)賬表
評(píng)論
0/150
提交評(píng)論