版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、嵌入式系統(tǒng)課程設(shè)計說明書電子時鐘系統(tǒng)院 部:學生姓名:指導(dǎo)教師:職稱專 業(yè):班 級:學 號:指導(dǎo)教師課題名稱目標湖南工學院嵌入式系統(tǒng)課程設(shè)計課題任務(wù)書學生姓名電子時鐘系統(tǒng)設(shè)計內(nèi) 容 及 任 務(wù)在GEC21叭發(fā)板上設(shè)計一個基于 QT的電子時鐘系統(tǒng)來顯示當前的系統(tǒng)時間。二、任務(wù)根據(jù)控制要求,明確設(shè)計任務(wù),擬定設(shè)計方案與進度計劃,運用所學的理論知 識,進行電子時鐘系統(tǒng)原理設(shè)計、硬件系統(tǒng)設(shè)計、軟件系統(tǒng)設(shè)計、創(chuàng)新設(shè)計,提高 理論知識工程應(yīng)用能力、系統(tǒng)調(diào)試能力、分析問題與解決問題的能力。主要內(nèi)容包 括:1. 嵌入式交叉開發(fā)環(huán)境搭建。2. Linux操作系統(tǒng)的移植。3. 根據(jù)需求確定外圍模塊設(shè)計并完成相應(yīng)驅(qū)
2、動開發(fā)4. 應(yīng)用程序原理及框架設(shè)計。5. Linux下應(yīng)用程序編寫及移植。6. 系統(tǒng)總體功能調(diào)試。7. 編寫設(shè)計說明書。三、要求1 .本系統(tǒng)顯示結(jié)果示例如下:2 .顯示的時間為開發(fā)板當前的系統(tǒng)時間,顯示的結(jié)果隨著系統(tǒng)時間變化而變 化。1馬忠梅,ARM & Linux嵌入式系統(tǒng)教程(第3版)M 。北京:北京航空航天大 學出版社,2014主2曹忠明,程姚根。從實踐中學嵌入式Linux操作系統(tǒng)M 。北京:電子工業(yè)出要版社,2012參考3宋寶華,Linux設(shè)備驅(qū)動開發(fā)詳解(第二版)M 。北京:人民郵電出版社,資2010。料4韋東山,嵌入式Linux應(yīng)用開發(fā)完全手冊M。北京:人民郵電出版社,2008 陸
3、文周,Qt5開發(fā)及實例M 。北京:電子工業(yè)出版社,2015 Stephen Prata C Primer PlusM。北京:人民郵電出版社,2005教研室意見教研室主任:(簽字)年 月曰摘要嵌入式操作系統(tǒng)是一種支持嵌入式系統(tǒng)應(yīng)用的操作系統(tǒng)軟件,它是嵌入式系統(tǒng) ( 包括硬、軟件系統(tǒng) ) 極為重要的組成部分,通常包括與硬件相關(guān)的底層驅(qū)動軟件、 系統(tǒng)內(nèi)核、設(shè)備驅(qū)動接口、通信協(xié)議、圖形界面、標準化瀏覽器等 Browser 。嵌入 式操作系統(tǒng)具有通用操作系統(tǒng)的基本特點,如能夠有效管理越來越復(fù)雜的系統(tǒng)資源; 能夠把硬件虛擬化,使得開發(fā)人員從繁忙的驅(qū)動程序移植和維護中解脫出來;能夠 提供庫函數(shù)、驅(qū)動程序、工
4、具集以及應(yīng)用程序 。與通用操作系統(tǒng)相比較,嵌入式操 作系統(tǒng)在系統(tǒng)實時高效性、硬件的相關(guān)依賴性、軟件固態(tài)化以及應(yīng)用的專用性等方 面具有較為突出的特點。嵌入式技術(shù)已成為信息產(chǎn)業(yè)中發(fā)展最快、應(yīng)用最廣的計算 機技術(shù)之一,并被廣泛應(yīng)用于網(wǎng)絡(luò)通信、消費電子、醫(yī)療電子、工業(yè)控制和交通系 統(tǒng)等領(lǐng)域。本次設(shè)計采用QT程序開發(fā)框架開發(fā)的模擬時鐘程序,使用Linux系統(tǒng)到嵌入式 終端移植和交叉編譯環(huán)境搭建,最終成功實現(xiàn)了在嵌入式終端的運行。關(guān)鍵詞:嵌入式系統(tǒng);QT;模擬時鐘;Linux系統(tǒng)目錄1 緒論 . 01.1 設(shè)計背景 . 11.2 設(shè)計目的和意義 . 12 嵌入式 Linux 系統(tǒng) 22.1 嵌入式 Lin
5、ux 概念. 22.2 嵌入式 Linux 組成 . 23 Qt 工具 . 33.1 Qt 簡介 33.2 Qt 優(yōu)點 34 模擬時鐘的設(shè)計 44.1 代碼的編寫 . 44.2 代碼的調(diào)試與運行 . 45 模擬時鐘到開發(fā)板的下載 65.1 交叉編譯環(huán)境的構(gòu)建 75.2 模擬時鐘到開發(fā)板的下載運行 7結(jié)論 10參考文獻 11致 謝 12附錄 131 緒論嵌入式 Linux 操作系統(tǒng)在廣泛和深入的應(yīng)用于各個領(lǐng)域, 應(yīng)用的技術(shù)也越來 越復(fù)雜。而隨著城市信息化和行業(yè)信息化的持續(xù)深入, 嵌入式技術(shù)已成為信息產(chǎn) 業(yè)中發(fā)展最快、 應(yīng)用最廣的計算機技術(shù)之一, 并被廣泛應(yīng)用于網(wǎng)絡(luò)通信、 消費電 子、醫(yī)療電子、工
6、業(yè)控制和交通系統(tǒng)等領(lǐng)域。嵌入式 Linux 開始采用較為復(fù)雜的 圖形用戶界面。QT以其強大的功能,良好的可移植性成為一種被廣泛使用的 GUI 系統(tǒng)。于是嵌入式操作系統(tǒng)及其相應(yīng)圖形用戶界面的不斷發(fā)展, 嵌入式軟件的開 發(fā)顯得越來越重要。 本次設(shè)計模擬時鐘能夠以簡潔的外觀為用戶提供時間信息成 為了系統(tǒng)中的重要組成部分,在基于QT的嵌入式系統(tǒng)中模擬時鐘具有深刻的實 用價值。1.1 設(shè)計背景源代碼開放的 Linux 搭建的嵌入式操作系統(tǒng)由于其強大的網(wǎng)絡(luò)功能和低成 本,近年來得到了越來越多的應(yīng)用。 其能夠提供全功能的桌面計算, 定制非常方 便并且支持大多數(shù)嵌入式系統(tǒng)上使用的芯片。 在嵌入式 Linux
7、操作系統(tǒng)上使用一 個功能完備的輕量級、高性能、高可靠、可配置的 GUI 系統(tǒng)成為可行的解決方 案。全過程自動化產(chǎn)品制造、 大范圍電子商務(wù)活動、 高度協(xié)同科學實驗以及現(xiàn)在 化家庭起居, 為嵌入式產(chǎn)品造就了嶄新而巨大的商機。 日趨增長的功能密度、 靈 活的網(wǎng)絡(luò)鏈接、輕便的移動應(yīng)用和多媒體的信息處理對嵌入式系統(tǒng)軟件技術(shù)提出 了新的挑戰(zhàn)。1.2 設(shè)計目的和意義隨著近年來計算機技術(shù)的迅速發(fā)展, 當新硬件、 新技術(shù)出現(xiàn)時, 計算機的體 系結(jié)構(gòu)、指令系統(tǒng)和操作系統(tǒng)都可能發(fā)生相應(yīng)的改變, 這勢必會導(dǎo)致一部風應(yīng)用 在新環(huán)境下無法正常運行。 如果舍棄原有軟件重新開發(fā), 將會耗費大量的人力和 財力,而浪費了許多成熟
8、的軟件成果。而 QT在源代碼級上實現(xiàn)了跨平臺特性, 極大地支持了跨平臺通用軟件的開發(fā)。 QT可以用同一個源程序在不同平臺上編 譯鏈接,生成目標代碼, 并取得相同的運行效果, 充分實現(xiàn)了程序的跨平臺運行。 這種基于源代碼的跨平臺特性不僅解決了性能的問題, 而且可以發(fā)揮各個平臺的 優(yōu)勢,充分利用每個平臺自身的特點; 并且即可以在新環(huán)境下實現(xiàn)原有軟件的功 能和特點,減少開發(fā)費用,還可以改進原有軟件的不足,增加新的需求,從而提 高軟件的質(zhì)量, 延長軟件生命期。 模擬時鐘需要編寫代碼來實現(xiàn)它的功能, 然后 對代碼進行編譯運行,檢查是否達到了預(yù)期的效果。2 嵌入式 Linux 系統(tǒng)2.1 嵌入式 Linu
9、x 簡介嵌入式 Linux 是將標準 Linux 操作系統(tǒng)進行裁剪修改, 使之能在嵌入式計算 機系統(tǒng)上運行的一種操作系統(tǒng)。它以應(yīng)用為中心,以計算機技術(shù)為基礎(chǔ),軟件、 硬件可裁剪,適應(yīng)應(yīng)用系統(tǒng)對功能、可靠性、成本、體積、功耗等有嚴格要求的 專用計算機系統(tǒng)。 Linux 從 1991 年問世到現(xiàn)在,短短的十幾年時間已經(jīng)發(fā)展成 為功能強大、 設(shè)計完善的操作系統(tǒng)之一, 不僅可以與各種傳統(tǒng)的商業(yè)操作系統(tǒng)分 庭抗爭,在新興的嵌入式操作系統(tǒng)領(lǐng)域內(nèi)也獲得了飛速發(fā)展。 嵌入式系統(tǒng)的發(fā)展 方向是與目標密切相關(guān)的嵌入性能、 操控能力與控制的可靠性。 嵌入式操作系統(tǒng) 從它的產(chǎn)生到現(xiàn)在經(jīng)歷了幾個階段, 全入市系統(tǒng)是以應(yīng)
10、用為中心的計算機技術(shù)為 基礎(chǔ)并且軟硬件是可裁剪的適用于對功能、 可靠性、 成本、功耗等有嚴格要求的 專用計算機系統(tǒng)嵌入式系統(tǒng)最典型的特點是與人們的日常生活緊密相關(guān), 任何一 個普通人都可能擁有各種運用了嵌入式技術(shù)的電子產(chǎn)品。 各種新型嵌入式設(shè)備在 數(shù)量上已經(jīng)遠遠超過了通用計算機。2.2 嵌入式 Linux 的組成一個最小的嵌入式系統(tǒng)基本組成為:一個用作引導(dǎo)的可用設(shè)施(工具); 一個具備內(nèi)存管理,進程管理和定時器服務(wù)的 Linux 微內(nèi)核;一個初始進程;硬 件的驅(qū)動程序; 一個或幾個應(yīng)用進程以提供必要的應(yīng)用功效。 嵌入式 Linux 既繼 承了 Internet 上無限的開放源代碼資源,又具有嵌
11、入式操作系統(tǒng)的特性。(1)硬件層:硬件層包含嵌入式微處理器、 存儲器(SDRAM、ROM、Flash 等)、通用設(shè)備接口和 I/O 接口( A/D、 D/A、 I/O 等)。在意嵌入式處理器基礎(chǔ) 上添加電源電路、 時鐘電路和存儲電路就構(gòu)成了一個嵌入式核心控制模塊。 其中 操作系統(tǒng)和應(yīng)用程序多都可以固化在 ROM 中。( 2)中間層: 硬件層與軟件層之間為中間層, 也稱為硬件抽象層 ( Hardware Abstract Layer, HAL )或者板級支持包(Board Support Package BSP),它半 系統(tǒng)上層軟件與底層硬件分離開來, 使系統(tǒng)的底層驅(qū)動程序與硬件無關(guān), 上層軟
12、件開發(fā)人員無需關(guān)心底層硬件的具體情況,根據(jù) BSP 層提供的接口即可進行開 發(fā)。該層一般包含相關(guān)底層硬件的初始化、數(shù)據(jù)的輸入/輸出操作和硬件設(shè)備的配置功能。(3)系統(tǒng)軟件層: 系統(tǒng)軟件層由實時多任務(wù)操作系統(tǒng) ( Real-time Operation System, RTOS)、文件系統(tǒng)、圖形用戶接口( Graphic User In terface, GUI)、 網(wǎng)絡(luò)系統(tǒng)及通用組件模塊組成。RTOS是嵌入式應(yīng)用軟件的基礎(chǔ)和開發(fā)平臺。3 Qt 工具3.1 Qt 簡介Qt是一個1991年由奇趣科技開發(fā)的跨平臺C+圖形用戶界面應(yīng)用程序開發(fā) 框架。它給應(yīng)用程序開發(fā)者提供了一套功能齊全的進行藝術(shù)級的圖
13、形用戶界面程 序設(shè)計所需的功能。Qt很容易擴展,并且允許真正地組件編程?;旧螿t和X Window 上的 GTK, Openwin , Motif 等圖形界面庫和 Windows 平臺上的 ATL , CL, OWL, VMFC 是非常類似的。 QtCreator 主要是為了幫助新 Qt 用戶更快速 入門并運行項目,還可提高有經(jīng)驗的 Qt 開發(fā)人員的工作效率。 Qt Creator 包括 項目生成向?qū)?、高級?C+ 代碼編輯器、瀏覽文件及類的工具、集成了 Qt Designer Qt Assistant、Qt Linguist、圖形化的 GDB 調(diào)試前端,集成 qmake 構(gòu) 建工具等。3.
14、2 Qt 優(yōu)點Qt的良好封裝機制使得Qt的模塊化程度非常高,可重用性較好,對于用戶 開發(fā)來說是非常方便的。 Qt 提供了一種稱為 signal/slots 的安全類型來替代 callback,這使得各個元件之間的協(xié)同工作變得十分簡單。Qt有豐富的API包括多達250個以上的C+類,還是提供基于模板的 collections,serialization,file, l/Odevice,directory managemen,date/time類,還包括正則表達式的處理功能。 支持2D/3D圖形渲染、OpenGL、大量的文檔開發(fā)、XML支持和實現(xiàn)本地界面 與 Web 內(nèi)容的無縫集成。164 模擬時
15、鐘的設(shè)計設(shè)計要求指針式的表盤為原型,并且圓周上有分布均勻的 12 個刻度,鐘面上有長度不同的指針,即時針、分針、秒針,間隔一秒更新一次時間。顯示的時 間為開發(fā)板當前的系統(tǒng)時間,顯示的結(jié)果隨著系統(tǒng)時間變化而變化。4.1 代碼的編寫模擬時鐘每一個模塊的功能是在 cpp 文件中實現(xiàn)的, h 文件是類、槽、函數(shù)、 變量的定義, main 主函數(shù)用來調(diào)用現(xiàn)實,頭文件和主函數(shù)的代碼如下:myclock.h 文件#ifndef MYCLOCK_H#define MYCLOCK_H#include #include #include #include #include #include namespace U
16、i class myclock;class myclock : public QWidgetQ_OBJECTpublic:explicit myclock(QWidget *parent = 0);myclock();protected:void paintEvent(QPaintEvent*);private:Ui:myclock *ui;QTimer *timer;int i;#endif / MYCLOCK_Hmain 主函數(shù):main.cpp#include myclock.h#include int main(int argc, char *argv)QApplication a(a
17、rgc, argv); myclock w;w.show();return a.exec();模擬時鐘的走時為調(diào)用系統(tǒng)時間,用定時器每一秒更新一次 draw 函數(shù),在 表盤上顯示為秒針跳動一格, 由于始終與系統(tǒng)時間保持一致, 所以完全可以作為 直接的時間顯示工具。實現(xiàn)的代碼如下:myclock:myclock(QWidget *parent) :QWidget(parent), ui(new Ui:myclock) ui-setupUi(this); this-resize(350,350); timer = new QTimer(this);/定時器connect(timer,SIGNAL(
18、timeout(),this,SLOT(update(); timer-start(1000); myclock:myclock()delete ui; 時鐘的指針繪制也是根據(jù)定義的坐標用畫筆畫出需要的指針形狀, 其中繪制 指針的實現(xiàn)代碼如下:QPen hourpen;/ 時針的畫筆 hourpen.setWidth(4);/ 設(shè)置畫筆寬度 /hourpen.setColor(Qt:blue);/ 設(shè)置畫筆顏色 mypainter.setPen(hourpen);mypainter.save();/mypainter.rotate(30.0* (time.hour() + time.minut
19、e() / 60.0);mypa in ter.drawC onv exPolyg on( hourHa nd, 3);/mypai nter.drawL in e(0,0,0,-80);mypa in ter.restore();QPe n minu tepe n;分針的畫筆mi nu tepe n.setWidth(3);minu tepe n. setColor(Qt:yellow);設(shè)置畫筆顏色mypai nter.setPe n( mi nu tepe n);mypa in ter.save();mypainter.rotate(6.0* (time.minute()+ time.s
20、econd() / 60.0);mypai nter.drawC onv exPolyg on (mi nuteHa nd, 3);/mypai nter.drawL in e(0,0,0,-100);mypa in ter.restore();QPen seco ndpe n;秒針的畫筆sec on dpe n. setWidth(1);seco ndpe n. setColor(Qt:blue);設(shè)置畫筆顏色4.2 代碼的調(diào)試和運行通過以上步驟代碼編寫已經(jīng)完成,在Windows系統(tǒng)下的QT運行。通過調(diào)試發(fā)現(xiàn)沒有發(fā)現(xiàn)錯誤和警告,就會出現(xiàn)如下的到模擬時鐘的界面,如圖1所示。 my clock
21、X圖1模擬時鐘界面5模擬時鐘到開發(fā)板的移植5.1交叉編譯環(huán)境的構(gòu)建在開發(fā)板上移植Linux系統(tǒng)之前,必須確保已經(jīng)安裝了 USB驅(qū)動,并把開發(fā) 版設(shè)置為NOR Flash啟動。系統(tǒng)更新和安裝完畢后設(shè)置為Nand Flash啟動。然后對Na nd Flash進行分區(qū),安裝bootloader,移植內(nèi)核文件,移植文件系統(tǒng)。 做完這些就可以進行交叉編譯環(huán)境構(gòu)建。在Linux平臺下,要為開發(fā)板編譯內(nèi)核, 圖形界面Qtopia,bootloader,還有其他一些英勇程序,均需要交叉編譯工具 鏈。(1) 安裝gcc編譯工具用于arm平臺程序的編譯工具,arm-linux-gcc , arm-li nu x-
22、g+ 等,把程序源碼包復(fù)制到用戶目錄下面解壓(2)設(shè)置環(huán)境變量,(3)保存設(shè)置最后在終端輸入以下命令:arm-li nux-gcc -v等待出現(xiàn)信息成功安裝。4.2模擬時鐘到開發(fā)板的下載與運行交叉編譯好的程序到開發(fā)板的下載用到串口,用串口線連接好開發(fā)板和電 腦,串口使用COM3接通電源,啟動開發(fā)板,登錄系統(tǒng),在SecureCRT中點擊連接。圖2串口連接設(shè)置進入后彈出一個對話框,在對話框中輸入一下幾條命令:(1)pwdIs(3)cd aaa(4)Is(5)source qtconf.sh(6)./myclock輸入以上命令后可以在SecureCRT中看到如下信息:(rootflCECSlO /*
23、 pwdIrootECSID /#ItDDTetcuap bupltwH 1hcacnttslibinput crvnstBjoun t. xhupiot.shUIledP3urF_di_spl 町ltdl吸wp_diplay_v3led v2procvc . h呻 displtnr.vllfcrootx iKbuimxhLat i andatalibubroxhjiopmiilev1 iisuarrFtlriwx tutlort+f omdtrortrootEC2IO /Iffcd(ro0tGE)C2lO /aaaU It 2O13-Q1-Q1-13-59-33. jpe qtAnLibl
24、11. tV. (xtilihLLLclodtalibvideoitAnLibl 11tlib-L 4. tar zo&t&EC210 /aalfl source qtconf.sh;root(S&EC210 /aaafl /*yclock圖3輸入命令結(jié)果圖4開發(fā)板顯示結(jié)果由圖 4 可以看出,開發(fā)板上的時鐘與系統(tǒng)時間一致, 并且隨系統(tǒng)時間的變化 而變化,說明設(shè)計成功。在下載運行時會遇到這些問題: 調(diào)用驅(qū)動時要保證實際驅(qū)動名字與應(yīng)用程序 名字相同; 通過串口顯示的數(shù)據(jù)是亂碼, 原因是波特率設(shè)置的不正確, 導(dǎo)致雙方 數(shù)據(jù)交互出現(xiàn)錯誤;開發(fā)板的系統(tǒng)上電后,不能重新啟動,究其原因是內(nèi)核、根 目錄系統(tǒng)或
25、者 bootloader 沒有正確的燒寫,重新燒寫后正常啟動;程序下載到 開發(fā)板上不能正確運行,提示缺少某個動態(tài)庫,將缺少的庫文件從 Qt 的安裝包 拷貝到 lib 目錄下完成后可正常啟動。結(jié)論本次課程設(shè)計實現(xiàn)了一種基于 Qt 的模擬時鐘的開發(fā)過程,實現(xiàn)了預(yù)期的功 能。編寫好的模擬時鐘代碼在Linux系統(tǒng)、Windows系統(tǒng)下都能編譯并運行成功, 還講交叉編譯好的程序下載到開發(fā)板上運行,沖鋒體現(xiàn)了 Qt 的跨平臺特性。為 了 Windows 系統(tǒng)下編寫編譯的 Qt 程序能夠在嵌入式 Linux 環(huán)境里運行,需要在 搭建交叉編譯環(huán)境時, 要配置環(huán)境變量, 設(shè)計編譯參數(shù), 任何一個依賴庫的確實 或
26、編譯參數(shù)的疏忽都可能導(dǎo)致交叉編譯不成功。交叉編譯好的 Qt 程序到開發(fā)板 移植時,嵌入式 Linux 中要有 Qt 程序運行的環(huán)境,移植時往往缺少很多庫文件 導(dǎo)致不能運行, 需要不斷測試并在交叉編譯環(huán)境中找到相應(yīng)的庫文件下載到開發(fā) 板。由于個人能力以及時間的限制, 此次設(shè)計最終能實現(xiàn)了一些基本功能, 但是 還有很大的擴展性, 比如時間設(shè)置等功能。 希望在今后的學習中可以學到更多完 善自己。參考文獻1馬忠梅,ARM & Linux嵌入式系統(tǒng)教程(第3版)M 。北京:北京航空航天 大學出版社, 20142曹忠明,程姚根。從實踐中學嵌入式 Linux操作系統(tǒng)M 。北京:電子工業(yè) 出版社, 20123
27、宋寶華,Linux設(shè)備驅(qū)動開發(fā)詳解(第二版)M 。北京:人民郵電出版社, 2010。4韋東山,嵌入式Linux應(yīng)用開發(fā)完全手冊M。北京:人民郵電出版社,2008 陸文周,Qt5開發(fā)及實例M 。北京:電子工業(yè)出版社,2015 Stephen Prata C Primer PlusM。北京:人民郵電出版社,2005致謝首先我要感謝我的老師在課程設(shè)計上給予我的指導(dǎo),提供給我的支持和幫 助,這是我能順利完成這次報告的主要原因, 更重要的是老師幫我解決了許多技 術(shù)上的難題, 讓我能把系統(tǒng)做得更加完善。 在此期間,我不僅學到了許多新的知 識,而且也開闊了視野,提高了自己的設(shè)計能力。其次,我要感謝幫助過我的
28、同 學,他們也為我解決了不少我不太明白的設(shè)計商的難題。 最后再一次感謝所有在 設(shè)計中曾經(jīng)幫助過我的良師益友和同學這段時間以來, 在老師的耐心指導(dǎo)下, 我 終于完成了本次的課程設(shè)計。附錄程序清單工程程序:# Project created by QtCreator 2016-11-2 仃04:30:07#QT += core guigreaterTha n( QT_MAJOR_VERSION, 4): QT += widgets TARGET = myclockTEMPLATE = appSOURCES += mai n.cppmyclock.cppHEADERS += m
29、yclock.hFORMS += myclock.ui頭文件程序:myclock.h#ifndef MYCLOCK_H#defi ne MYCLOCK_H#include #in clude #i nclude #i nclude #i nclude #i nclude vqmath.hn amespace Ui class myclock;class myclock : public QWidgetQ_OBJECTpublic:explicit myclock(QWidget *pare nt = 0);m yclock();protected:void pai ntEve nt(QPai
30、ntEve nt*); private:Ui:myclock *ui;QTimer *timer;int i;#e ndif / MYCLOCK_H源文件程序:main .cpp#i nclude myclock.h#in clude vQApplicatio n int main (i nt argc, char *argv) QApplicati on a(argc, argv); myclock w;w.show();return a.exec(); myclock.cpp#i nclude myclock.h#i nclude ui_myclock.hmyclock:myclock(Q
31、Widget *pare nt):QWidget(pare nt).ui(new Ui:myclock)ui-setupUi(this);this-resize(350,350);timer = new QTimer(this);/定時器conn ect(timer,SIGNAL(timeout(),this,SLOT(update();timer-start(1000);myclock:myclock()delete ui;void myclock:pa in tEve nt(QPa in tEve nt *)QTime time = QTime:curre ntTime();獲取系統(tǒng)時間Q
32、Pai nter mypai nter(this);/定義畫家mypai nter.setRe nderHi nt(QPai nter:A ntialiasi ng);平滑設(shè)置static const QPoint hourHa nd3 = QPoi nt(4, 4),QPoi nt(-4, 4),QPoi nt(0, -80);/ 時針static const QPoint minu teHa nd3 = QPoi nt(4, 4),QPoi nt(-4, 4),QPoint(0, -100);/ 分針static const QPoint sec on dHa nd4 = QPoi nt(
33、5, 5),QPoint(0, 30),QPoi nt(-5, 5),QPoi nt(0,-120);/ 秒針/mypai nter.tra nslate(this-width()/100,this-height()/100);/標平移QPen pen;/定義圓畫筆pen .setWidth(5);設(shè)置畫筆寬度pen .setColor(Qt:blue);設(shè)置畫筆顏色mypainter.translate(170,170);將(0,0)坐標平移到(170,170)的位置mypai nter.setPe n(pe n);mypai nter.drawEllipse(-150,-150,300,3
34、00);畫圓QPen rul;/刻度的畫筆mypai nter.setPe n(rul);mypa in ter.save();保存原有狀態(tài)for (i nt i = 0; i 60; +i)if(i%5 = 0)mypainter.drawLine(150, 0, 135, 0);mypainter.drawLine(150, 0, 145, 0);mypai nter.rotate(6.0);mypa in ter.restore();/恢復(fù)坐標QPe n hourpe n;時針的畫筆hourpe n.setWidth;設(shè)置畫筆寬度/hourpe n. setColor(Qt:blue);/設(shè)置畫筆顏色mypa in ter.setPe n
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度醫(yī)院醫(yī)療廢物處理設(shè)施建設(shè)合同4篇
- 2025年度個人創(chuàng)業(yè)貸款合同示范文本8篇
- 二零二五年度美容院美容護膚品生產(chǎn)股份合作合同4篇
- 二零二五版木質(zhì)家具定制設(shè)計與生產(chǎn)加工合同3篇
- 二零二五年度電子商務(wù)平臺標志設(shè)計及用戶體驗合同3篇
- 二零二五年度托盤租賃與供應(yīng)鏈金融結(jié)合合同范本3篇
- 二零二五年度昌平區(qū)食堂員工激勵與績效考核合同3篇
- 2025年度汽車租賃與品牌合作推廣合同范本3篇
- 二零二五年度城市綠化工程承包合同14篇
- 2025年度線上線下聯(lián)動大型促銷活動合作合同3篇
- 邊防通行證委托書
- 《浸沒式液冷冷卻液選型要求》
- 我的消防文員職業(yè)規(guī)劃
- 2024年世界職業(yè)院校技能大賽高職組“市政管線(道)數(shù)字化施工組”賽項考試題庫
- 介紹蝴蝶蘭課件
- CSC資助出國博士聯(lián)合培養(yǎng)研修計劃英文-research-plan
- 《環(huán)境管理學》教案
- 《阻燃材料與技術(shù)》課件 第5講 阻燃塑料材料
- 2025年蛇年年度營銷日歷營銷建議【2025營銷日歷】
- (一模)寧波市2024學年第一學期高考模擬考試 數(shù)學試卷(含答案)
- 金蛇納瑞企業(yè)2025年會慶典
評論
0/150
提交評論