<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > Qt圖形編程基礎之:Qt/Embedded開(kāi)發(fā)入門(mén)

Qt圖形編程基礎之:Qt/Embedded開(kāi)發(fā)入門(mén)

作者: 時(shí)間:2013-09-13 來(lái)源:網(wǎng)絡(luò ) 收藏

本文引用地址:http://dyxdggzs.com/article/257103.htm

2.Qt的開(kāi)發(fā)環(huán)境

的開(kāi)發(fā)環(huán)境可以取代那些我們熟知的UNIX和Windows開(kāi)發(fā)工具。它提供了幾個(gè)跨平臺的工具使得開(kāi)發(fā)變得迅速和方便,尤其是它的圖形設計器。UNIX下的開(kāi)發(fā)者可以在PC機或者工作站使用虛擬緩沖幀,從而可以模仿一個(gè)和嵌入式設備的顯示終端大小,像素相同的顯示環(huán)境。

嵌入式設備的應用可以在安裝了一個(gè)跨平臺開(kāi)發(fā)工具鏈的不同的平臺上編譯。最通常的做法是在一個(gè)UNIX系統上安裝跨平臺的帶有libc庫的GNUC++編譯器和二進(jìn)制工具。在開(kāi)發(fā)的許多階段,一個(gè)可替代的做法是使用Qt的桌面版本,例如通過(guò)Qt/X11或是Qt/Windows來(lái)進(jìn)行開(kāi)發(fā)。這樣開(kāi)發(fā)人員就可以使用他們熟悉的開(kāi)發(fā)環(huán)境,例如微軟公司的VisualC++或者BorlandC++。在UNIX下,許多環(huán)境也是可用的,例如Kdevelop,它也支持交互式開(kāi)發(fā)。

如果的應用是在UNIX平臺下開(kāi)發(fā)的話(huà),那么它就可以在開(kāi)發(fā)的機器上以一個(gè)獨立的控制臺或者虛擬緩沖幀的方式來(lái)運行,對于后者來(lái)說(shuō),其實(shí)是有一個(gè)X11的應用程序虛擬了一個(gè)緩沖幀。通過(guò)指定顯示設備的寬度、高度和顏色深度,虛擬出來(lái)的緩沖幀將和物理的顯示設備在每個(gè)像素上保持一致。這樣每次調試應用時(shí)開(kāi)發(fā)人員就不用總是刷新嵌入式設備的Flash存儲空間,從而加速了應用的編譯、鏈接和運行周期。運行Qt的虛擬緩沖幀工具的方法是在的圖形模式下運行以下命令:

qvfb(回車(chē))

當Qt嵌入式的應用程序要把顯示結果輸出到虛擬緩沖幀時(shí),我們在命令行運行這個(gè)程序,并在程序名后加上-qws的選項。例如:$>hello–qws。

3.Qt的支撐工具

Qt包含了許多支持嵌入式系統開(kāi)發(fā)的工具,有兩個(gè)最實(shí)用的工具是qmake和Qtdesigner(圖形設計器)。

n qmake是一個(gè)為編譯庫和應用而提供的Makefile生成器。它能夠根據一個(gè)工程文件(.pro)產(chǎn)生不同平臺下的Makefile文件。qmake支持跨平臺開(kāi)發(fā)和影子生成,影子生成是指當工程的源代碼共享給網(wǎng)絡(luò )上的多臺機器時(shí),每臺機器編譯鏈接這個(gè)工程的代碼將在不同的子路徑下完成,這樣就不會(huì )覆蓋別人的編譯鏈接生成的文件。qmake還易于在不同的配置之間切換。

n Qt圖形設計器可以使開(kāi)發(fā)者可視化地設計對話(huà)框而不需編寫(xiě)代碼。使用Qt圖形設計器的布局管理可以生成能平滑改變尺寸的對話(huà)框。

qmake和Qt圖形設計器是完全集成在一起的。

12.2.2Qt/Embedded信號和機制

1.機制概述

信號和機制是Qt的核心機制,要精通Qt編程就必須對信號和有所了解。信號和插槽是一種高級接口,應用于對象之間的通信,它是Qt的核心特性,也是Qt區別于其他工具包的重要地方。信號和插槽是Qt自行定義的一種通信機制,它獨立于標準的C/C++語(yǔ)言,因此要正確地處理信號和插槽,必須借助一個(gè)稱(chēng)為moc(MetaObjectCompiler)的Qt工具,該工具是一個(gè)C++預處理程序,它為高層次的事件處理自動(dòng)生成所需要的附加代碼。

所謂圖形用戶(hù)接口的應用就是要對用戶(hù)的動(dòng)作做出響應。例如,當用戶(hù)單擊了一個(gè)菜單項或是工具欄的按鈕時(shí),應用程序會(huì )執行某些代碼。大部分情況下,是希望不同類(lèi)型的對象之間能夠進(jìn)行通信。程序員必須把事件和相關(guān)代碼聯(lián)系起來(lái),這樣才能對事件做出響應。以前的工具開(kāi)發(fā)包使用的事件響應機制是易崩潰的,不夠健壯的,同時(shí)也不是面向對象的。

以前,當使用回調函數機制把某段響應代碼和一個(gè)按鈕的動(dòng)作相關(guān)聯(lián)時(shí),通常把那段響應代碼寫(xiě)成一個(gè)函數,然后把這個(gè)函數的地址指針傳給按鈕,當那個(gè)按鈕被單擊時(shí),這個(gè)函數就會(huì )被執行。對于這種方式,以前的開(kāi)發(fā)包不能夠確?;卣{函數被執行時(shí)所傳遞進(jìn)來(lái)的函數參數就是正確的類(lèi)型,因此容易造成進(jìn)程崩潰。另外一個(gè)問(wèn)題是,回調這種方式緊緊地綁定了圖形用戶(hù)接口的功能元素,因而很難進(jìn)行獨立的開(kāi)發(fā)。

信號與插槽機制是不同的。它是一種強有力的對象間通信機制,完全可以取代原始的回調和消息映射機制。在Qt中信號和插槽取代了上述這些凌亂的函數指針,使得用戶(hù)編寫(xiě)這些通信程序更為簡(jiǎn)潔明了。信號和插槽能攜帶任意數量和任意類(lèi)型的參數,它們是類(lèi)型完全安全的,因此不會(huì )像回調函數那樣產(chǎn)生coredumps。

圖12.2對象間信號與插槽的關(guān)系

所有從QObject或其子類(lèi)(例如Qwidget)派生的類(lèi)都能夠包含信號和插槽。當對象改變狀態(tài)時(shí),信號就由該對象發(fā)射(emit)出去了,這就是對象所要做的全部工作,它不知道另一端是誰(shuí)在接收這個(gè)信號。這就是真正的信息封裝,它確保對象被當作一個(gè)真正的軟件組件來(lái)使用。插槽用于接收信號,但它們是普通的對象成員函數。一個(gè)插槽并不知道是否有任何信號與自己相連接。而且,對象并不了解具體的通信機制。

用戶(hù)可以將很多信號與單個(gè)插槽進(jìn)行連接,也可以將單個(gè)信號與很多插槽進(jìn)行連接,甚至將一個(gè)信號與另外一個(gè)信號相連接也是可能的,這時(shí)無(wú)論第一個(gè)信號什么時(shí)候發(fā)射,系統都將立刻發(fā)射第二個(gè)信號??傊?,信號與插槽構造了一個(gè)強大的部件編程機制。

linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)

linux相關(guān)文章:linux教程




評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>