freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于qt的貪吃蛇游戲設(shè)計與實現(xiàn)本科設(shè)計與實現(xiàn)(編輯修改稿)

2025-01-11 06:13 本頁面
 

【文章內(nèi)容簡介】 次結(jié)構(gòu),因此,不同的操作系統(tǒng)具有特定的硬件接口形式。 實際上, BSP 是一個介于操作系統(tǒng)和底層硬件之間的軟件層次,包括了系統(tǒng)中大部分 與硬件聯(lián)系緊密的軟件模塊。設(shè)計一個完整的 BSP 需要完成兩部分工作: 嵌入式系統(tǒng) 的硬件初始化以及 BSP 功能,設(shè)計硬件相關(guān)的 設(shè)備驅(qū)動 。 特點 可裁剪性 支持開放性和可伸縮性的體系結(jié)構(gòu)。 北京郵電大學(xué)畢業(yè)設(shè)計 4 強實時性 EOS 實時性一般較強,可用于各種設(shè)備控制中。 統(tǒng)一的接口 提供設(shè)備統(tǒng)一的驅(qū)動接口。 方便 操作方便、簡單、提供友好的圖形 GUI 和圖形界面,追求易學(xué)易用。提供強大的網(wǎng)絡(luò)功能,支持 TCP/IP 協(xié)議及其他協(xié)議,提供 TCP/UDP/IP/PPP 協(xié)議支持 及統(tǒng)一的 MAC訪問層接口,為各種移動計算設(shè)備預(yù)留接口。 強穩(wěn)定性,弱 交互性 嵌入式系統(tǒng)一旦開始運行就不需要用戶過多的干預(yù)、這就要負(fù)責(zé)系統(tǒng)管理的 EOS具有較強的穩(wěn)定性。嵌入式操作系統(tǒng)的用戶接口一般不提供操作命令,它通過系統(tǒng)的調(diào)用命令向用戶程序提供服務(wù)。 固化代碼 在嵌入式系統(tǒng)中,嵌入式操作系統(tǒng)和應(yīng)用軟件被固化在嵌入式系統(tǒng)計算機的 ROM中。 適應(yīng)性 更 好的硬件適應(yīng)性,也就是良好的移植性。 北京郵電大學(xué)畢業(yè)設(shè)計 5 2 開發(fā)環(huán)境及 關(guān)鍵技術(shù) Qt Qt 是諾基亞開發(fā)的一個跨平臺的 C++圖形用戶界面應(yīng)用程序框架。它既可以開發(fā)GUI 程式,也可用于開發(fā)非 GUI 程式,比如控制臺工具和服務(wù)器。它提供給應(yīng)用程序開發(fā)者建立藝術(shù)級的圖形用戶界面所需的所用功能。 Qt 是完全面向?qū)ο蟮?,很容易擴展,并且允許真正地組件編程。 它具有: ( 1) 優(yōu)良的跨平臺特性 ( 2)面向?qū)ο? ( 3)豐富的 API ( 4)大量的開發(fā)文檔 ( 5) XML 支持 ( 6) Webkit 引擎 的集成,可以實現(xiàn)本地界面與 Web 內(nèi)容的無縫集成 ( 7)用戶自定義控件 ( 8)方便性 ( 9)國際化 ( 10)高性能的工具 ( 11)優(yōu)越的繪畫功能 ( 12)繪制 2D/3D 圖形功能 信號和槽機制 信號和槽作為 QT 的核心機制在 QT 編程中有著廣泛的應(yīng)用,要精通 QT編程就必須對信號和槽有所了解。信號和槽是一種高級接口,應(yīng)用于對象之間的通信,他是 QT的核心特性,也是 QT差別于其他工具包的重要地方。信號和槽是 QT自行定義的一種通信機制,他獨立于標(biāo)準(zhǔn)的 C/C++語言,因此要正確的處理信號和槽,必須借助 一個稱為 moc( Meta Object Compiler 的 QT 工具,該工具是個 C++預(yù)處理程式,他為高層次的事件處理自動生成所需要的附加代碼。 在我們所熟知的非常多 GUI 工具包中,窗口小部件( widget 都有一個回調(diào)函數(shù)用于響應(yīng)他們能觸發(fā)的每個動作,這個回調(diào)函數(shù)通常是個指向某個函數(shù)的指針。不過,在QT 中信號和槽取代了這些凌亂的函數(shù)指針,使得我們編寫這些通信程式更為簡潔明了。信號和槽能攜帶任意數(shù)量和任意類型的參數(shù),他們是類型完全安全的,不會像回調(diào)函數(shù)那樣產(chǎn)生 core dumps 所有從 QObject 或其子類(例 如 QWidget)派生的類都能夠包含信號和槽。當(dāng)對象改動其狀態(tài)時,信號就由該對象發(fā)射( emit)出去,這就是對象所要做的全部事情,他不知道另一端是誰在接收這個信號。這就是真正的消息封裝,他確保對象被當(dāng)作一個真正的軟件組件來使用。槽用于接收信號,但他們是普通的對象成員函北京郵電大學(xué)畢業(yè)設(shè)計 6 數(shù)。一個槽并不知道是否有所有信號和自己相連接。而且,對象并不了解具體的通信機制。 你能將非常多信號和單個的槽進行連接,也能將單個的信號和非常多的槽進行連接,甚至于將一個信號和另外一個信號相連接也是可能的,這時無論第一個信號什么時候發(fā)射系統(tǒng)都將即 時發(fā)射第二個信號??傊?,信號和槽構(gòu)造了一個強大的部件編程機制。 信號 當(dāng)某個信號對其客戶或所有者發(fā)生的內(nèi)部狀態(tài)發(fā)生改動,信號被一個對象發(fā)射。只有定義過這個信號的類及其派生類能夠發(fā)射這個信號。當(dāng)一個信號被發(fā)射時,和其相關(guān)聯(lián)的槽將被即時執(zhí)行,就象一個正常的函數(shù)調(diào)用相同。信號 槽機制完全獨立于所有 GUI 事件循環(huán)。只有當(dāng)所有的槽返回以后發(fā)射函數(shù)( emit)才返回。如果存在多個槽和某個信號相關(guān)聯(lián),那么,當(dāng)這個信號被發(fā)射時,這些槽將會一個接一個地執(zhí)行,不過他們執(zhí)行的順序?qū)请S機的、不確定的,我們不能人 為地指定哪個先執(zhí)行、哪個后執(zhí)行。 槽函數(shù) 槽是普通的 C++成員函數(shù),能被正常調(diào)用,他們唯一的特別性就是非常多信號能和其相關(guān)聯(lián)。當(dāng)和其關(guān)聯(lián)的信號被發(fā)射時,這個槽就會被調(diào)用。槽能有參數(shù),但槽的參數(shù)不能有缺省值。既然槽是普通的成員函數(shù),因此和其他的函數(shù)相同,他們也有存取權(quán)限。槽的存取權(quán)限決定了誰能夠和其相關(guān)聯(lián)。同普通的 C++成員函數(shù)相同,槽函數(shù)也分為三種類型,即 public slots、 private slots 和 protected slots。 public slots:在這個區(qū)內(nèi)聲明的槽意味著 所有對象都可將信號和之相連接。這對于組件編程非常有用,你能創(chuàng)建彼此互不了解的對象,將他們的信號和槽進行連接以便信息能夠正確的傳遞。 protected slots:在這個區(qū)內(nèi)聲明的槽意味著當(dāng)前類及其子類能將信號和之相連接。這適用于那些槽,他們是類實現(xiàn)的一部分,不過其界面接口卻面向外部。 private slots:在這個區(qū)內(nèi)聲明的槽意味著只有類自己能將信號和之相連接。這適用于聯(lián)系非常緊密的類。 布局管理 窗體上的所有的控件必須有一個合適的尺寸和位置。 Qt提供了一些類負(fù)責(zé)排列窗體上的控件,主要有: QHBoxLayout, QVBoxLayout, QGridLayout, QStackLayout。 他們之間的繼承關(guān)系如圖 21所示。 北京郵電大學(xué)畢業(yè)設(shè)計 7 圖 21 布局管理繼承關(guān)系圖 Qt 中有三種方式對窗體上的控件進行布局管 理:絕對位置定位( absolute positioning),手工布局( manual layout),布局管理器( layout managers) 。 在 QT 中, Layout 和 Widget 是相對獨立的類,但是 Layout 本身單獨存在并沒有意義,需要和 Widget 配合使用。而 Widget 本身不負(fù)責(zé)子控件的布局管理。你可以認(rèn)為,Layout 類其實只是一組預(yù)先撰寫好的代碼,在父控件尺寸變化時,根據(jù)預(yù)設(shè)參數(shù)和子控件的各種 Geometry hint,管理控件的位置和尺寸。 Layout 首先是要通過 QWidget::setLayout 函數(shù),將一個 QLayout 類設(shè)置為控件的布局管理器。這一步實際也將這個控件設(shè)置為 QLayout 類的父控件。而后,通常通過QLayout::addWidget()等函數(shù),將 widget 添加到 Layout 類的布局管理體系中 。 但是,Layout 本身并不是 Widget 的父控件,因為 QWidget 類的父控件只能是 QWidget 類,所以 Layout 將其管理的子控件的父控件重定向為自己的父控件。另外,因為 QWidget 類本身并不是一個 QLayoutItem,而 Qlayout 的管理又是以 QLayoutItem 為單位。所以,在 addWidget 的操作中, QLayout 還會創(chuàng)建一個 QLayoutItem 的子類 QWidgetItem 類來對應(yīng)的包裝代理添加進來的子控件。 QWidgetItem 對象最終會將 QLayout 布局管理體系中的布局參數(shù)信息裝換、設(shè)置到它所代理的 QWidget 對象上 在 QT 下進行界面設(shè)計,可以使用水平、垂直和 Grid 布局管理器來進行。水平布局管理器可以把它所管理的部件以水平的順序依次排開 。 垂直管理器類似,它可以把它所管理的部件以垂直的順序依次排開 。 Grid 布局管理器可以以網(wǎng)格的形式,將它所管理的部件 以一定的矩陣形式排列。在 QT下做界面設(shè)計的時候,其實無非就是利用上面三種布局管理器來將部件進行分類和排列。 程序啟動畫面 QSplashScreen 類 當(dāng)程序的初始化工作比較多,程序可能啟動較長時間后,窗口才會顯示出來,用戶沒準(zhǔn)會抱怨程序響應(yīng)的慢。 為了改善用戶體驗,最好在程序初始化這段時間顯示 logo,或者其他信息提示用戶程序已啟動。 QT提供了 QSplashScreen 類,其使用方法比較簡單,下面的例子就是,當(dāng)程序運行到 splash. show()。時, 就會顯示出來,當(dāng) dialog 的初始化完成,運行到 splash. finish(amp。 dialog)。時, 主窗口顯示出來,并且 啟動畫面隱藏 。 北京郵電大學(xué)畢業(yè)設(shè)計 8 當(dāng)程序啟動慢的時候,該畫面就會停留一會,也可以在圖片上顯示一下程序啟動的加載信息, 、 但是如果程序啟動很快的話,啟動圖片就會一閃而過,其實啟動畫面也出現(xiàn)了的,只是出現(xiàn)的時間比較短,如果想讓程序啟動之前畫面多停留一下,可以添加一個延時器 。 QTimer 類 QTimer 類提供了定時器信號和單觸發(fā)定時器。 它在內(nèi)部使用定時器事件來提供更通用的定時器。 QTimer 很容易使用:創(chuàng) 建 QTimer,使用 start()來開始并且把它的 timeout()連接到適當(dāng)?shù)牟邸.?dāng)這段時間過去了,它將會發(fā)射 timeout()信號。 注意當(dāng) QTimer 的父對象被銷毀時,它也會被自動銷毀。 你也可以使用靜態(tài)的 singleShot()函數(shù)來創(chuàng)建單觸發(fā)定時器。 作為一個特殊情況,一旦窗口系統(tǒng)事件隊列中的所有事件都已經(jīng)被處理完,一個定時為 0 的 QTimer 就會到時間了。 這也可以用來當(dāng)提供迅速的用戶界面時來做比較繁重的工作 。 二維圖形的繪制方法 Qt 的二維圖形引擎是基于 QPainter 類的, QPainter 既可以繪制幾何圖形,也可以繪制像素映射、圖像和文字。此外, QPainter 也支持一些高級特性,例如反走樣(針對文字和圖形邊緣)、像素混合、漸變填充和矢量路徑等, QPainter 也支持線性變換,例如平移、旋轉(zhuǎn)、錯切和縮放。 QPainter 可以畫在 “ 繪圖設(shè)備 ” 上,例如: QWidget、 QPixmap、 QIamge 或者QSvgGenerator。 QPainter 也可以與 QPrinter 一起使用來打印文件盒創(chuàng)建 PDF 文檔。這意味著通??梢杂孟嗤拇a在屏幕上顯示數(shù)據(jù),也可以生成打印形式的報告。 如果要在繪圖設(shè) 備(一般為窗口部件)上繪圖,只需創(chuàng)建一個 QPainter,再將指針傳到該設(shè)備中。 使用 QPainter 的 draw...()函數(shù),可以繪制各種各樣的形狀。繪制效果取決于QPainter 的設(shè)置,一些是從設(shè)備中取得的,然而有些被初始化成默認(rèn)值。三個主要設(shè)置是畫筆、畫刷、字體: 畫筆:用來畫線和邊緣。它包含顏色、寬度、線性、拐點風(fēng)格以及連線風(fēng)格。 畫刷:用來填充幾何圖形的圖案。它一般由顏色和風(fēng)格組成,但同時也可以是紋理(一個不斷重復(fù)的圖像)或者是一個漸變。 字體:用來繪制文字。字體有很多屬性,包括字體族和磅值大小。 可以隨時調(diào)用 QPen、 QBrush 或者 QFont 對象的 setPen()、 setBrush()和 setFont()來修改這些設(shè)置。 draw...,見明知義。繪制點 drawPoint()、繪制直線 drawLine()、繪制折線drawPolyLine()、繪制多點 drawPoints()、繪制多直線 drawLines()、繪制矩形區(qū)域drawRect()、繪制圓角區(qū)域 drawRoundRect()、繪制橢圓 drawEllipse()、繪制背景圖片 drawPixmap()等! 北京郵電大學(xué)畢業(yè)設(shè)計 9 右鍵菜單 QWidget及其子類都可有右鍵菜單,因為 QWidget 有以下兩個與右鍵菜單有關(guān)的函數(shù): Qt::ContextMenuPolicy contextMenuPolicy () const void setContextMenuPolicy ( Qt::ContextMenuPolicy policy ) 使用方式如下: 1)默認(rèn)是 Qt::DefaultContextMenu。 它是利用右鍵菜單事件 contextMenuEvent()來處理( which means the contextMenuEvent() handler is called)。就是要重寫 contextMenuEvent ( QContextMenuEvent * event )函數(shù)。 2)使用 Qt::CustomContextMenu。 它是發(fā)出 QWidget::customContextMenuRequested 信號,注意僅僅只是發(fā)信號,意味著要自己寫顯示右鍵菜單的 slot。 這個信號是 QWidget 唯一與右鍵菜單有關(guān)的信號(也是自有的唯一信號),同時也是很容易被
點擊復(fù)制文檔內(nèi)容
研究報告相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1