<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

12.2開(kāi)發(fā)入門(mén)

12.2.1介紹

1.架構

以原始Qt為基礎,并做了許多出色的調整以適用于嵌入式環(huán)境。Qt/Embedded通過(guò)QtAPI與I/O設施直接交互,成為嵌入式端口。同Qt/X11相比,Qt/Embedded很省內存,因為它不需要一個(gè)X服務(wù)器或是Xlib庫,它在底層拋棄了Xlib,采用framebuffer(幀緩沖)作為底層圖形接口。同時(shí),將外部輸入設備抽象為keyboard和mouse輸入事件。Qt/Embedde的應用程序可以直接寫(xiě)內核緩沖幀,這避免開(kāi)發(fā)者使用繁瑣的Xlib/Server系統。圖12.1所示比較了Qt/Embedded與Qt/X11的架構區別。

使用單一的API進(jìn)行跨平臺的編程可以有很多好處。提供嵌入式設備和桌面計算機環(huán)境下應用的公司可以培訓開(kāi)發(fā)人員使用同一套工具開(kāi)發(fā)包,這有利于開(kāi)發(fā)人員之間共享開(kāi)發(fā)經(jīng)驗與知識,也使得管理人員在分配開(kāi)發(fā)人員到項目中的時(shí)候增加靈活性。更進(jìn)一步來(lái)說(shuō),針對某個(gè)平臺而開(kāi)發(fā)的應用和組件也可以銷(xiāo)售到Qt支持的其他平臺上,從而以低廉的成本擴大產(chǎn)品的市場(chǎng)。

(1)窗口系統。

一個(gè)Qt/Embedded窗口系統包含了一個(gè)或多個(gè)進(jìn)程,其中的一個(gè)進(jìn)程可作為服務(wù)器。該服務(wù)進(jìn)程會(huì )分配客戶(hù)顯示區域,以及產(chǎn)生鼠標和鍵盤(pán)事件。該服務(wù)進(jìn)程還能夠提供輸入方法和一個(gè)用戶(hù)接口給運行起來(lái)的客戶(hù)應用程序。該服務(wù)進(jìn)程其實(shí)就是一個(gè)有某些額外權限的客戶(hù)進(jìn)程。任何程序都可以在命令行上加上“-qws”的選項來(lái)把它作為一個(gè)服務(wù)器運行。

客戶(hù)與服務(wù)器之間的通信使用共享內存的方法實(shí)現,通信量應該保持最小,例如客戶(hù)進(jìn)程直接訪(fǎng)問(wèn)幀緩沖來(lái)完成全部的繪制操作,而不會(huì )通過(guò)服務(wù)器,客戶(hù)程序需要負責繪制它們自己的標題欄和其他式樣。這就是Qt/Embedded庫內部層次分明的處理過(guò)程??蛻?hù)可以使用QCOP通道交換消息。服務(wù)進(jìn)程簡(jiǎn)單的廣播QCOP消息給所有監聽(tīng)指定通道的應用進(jìn)程,接著(zhù)應用進(jìn)程可以把一個(gè)連接到一個(gè)負責接收的信號上,從而對消息做出響應。消息的傳遞通常伴隨著(zhù)二進(jìn)制數據的傳輸,這是通過(guò)一個(gè)QDataStream類(lèi)的序列化過(guò)程來(lái)實(shí)現的,有關(guān)這個(gè)類(lèi)的描述,請讀者參考相關(guān)資料。

QProcess類(lèi)提供了另外一種異步的進(jìn)程間通信機制。它用于啟動(dòng)一個(gè)外部的程序并且通過(guò)寫(xiě)一個(gè)標準的輸入和讀取外部程序的標準輸出和錯誤碼來(lái)和它們通信。

(2)字體

Qt/Embedded支持4種不同的字體格式:TrueType字體(TTF),PostscriptType1字體,位圖發(fā)布字體(BDF)和Qt的預呈現(Pre-rendered)字體(QPF)。Qt還可以通過(guò)增加Qfont-
Factory的子類(lèi)來(lái)支持其他字體,也可以支持以插件方式出現的反別名字體。

每個(gè)TTF或者TYPE1類(lèi)型的字體首次在圖形或者文本方式的環(huán)境下被使用時(shí),這些字體的字形都會(huì )以指定的大小被預先呈現出來(lái),呈現的結果會(huì )被緩沖。根據給定的字體尺寸(例如10或12點(diǎn)陣)預先呈現TTF或者TYPE1類(lèi)型的字體文件并把結果以QPF的格式保存起來(lái),這樣可以節省內存和CPU的處理時(shí)間。QPF文件包含了一些必要的字體,這些字體可以通過(guò)makeqpf工具取得,或者通過(guò)運行程序時(shí)加上“-savefonts”選項獲取。如果應用程序中使用到的字體都是QPF格式,那么Qt/Embedded將被重新配置,并排除對TTF和TYPE1類(lèi)型的字體的編譯,這樣就可以減少Qt/Embedded的庫的大小和存儲字體的空間。例如一個(gè)10點(diǎn)陣大小的包含所有ASCII字符的QPF字體文件的大小為1300字節,這個(gè)文件可以直接從物理存儲格式映射成為內存存儲格式。

Qt/Embedded的字體通常包括Unicode字體的一部分子集,ASCII和Latin-1。一個(gè)完整的16點(diǎn)陣的Unicode字體的存儲空間通常超過(guò)1MB,我們應盡可能存儲一個(gè)字體的子集,而不是存儲所有的字,例如在一個(gè)應用中,僅僅需要以Cappuccino字體、粗體的方式顯示產(chǎn)品的名稱(chēng),但是卻有一個(gè)包含了全部字形的字體文件。

(3)輸入設備及輸入法。

Qt/Embedded3.0支持幾種鼠標協(xié)議:BusMouse、IntelliMouse,Microsoft和MouseMan.Qt/
Embedded還支持NECVr41XX和iPAQ的觸摸屏。通過(guò)從QWSMouseHandler或者Qcalibra-
tedMouseHandler派生子類(lèi),開(kāi)發(fā)人員可以讓Qt/Embedded支持更多的客戶(hù)指示設備。

Qt/Embedded支持標準的101鍵盤(pán)和Vr41XX按鍵,通過(guò)子類(lèi)化QWSKeyboardHandler可以讓Qt/Embedded支持更多的客戶(hù)鍵盤(pán)和其他的非指示設備。

對于非拉丁語(yǔ)系字符(例如阿拉伯、中文、希伯來(lái)和日語(yǔ))的輸入法,需要把它寫(xiě)成過(guò)濾器的方式,并改變鍵盤(pán)的輸入。輸入法的作者應該對全部的QtAPI的使用有完整的認識。在一個(gè)無(wú)鍵盤(pán)的設備上,輸入法成了惟一的輸入字符的手段。Qtopia提供了4種輸入方法:筆跡識別器、圖形化的標準鍵盤(pán)、Unicode鍵盤(pán)和基于字典方式提取的鍵盤(pán)。

(4)屏幕加速

通過(guò)子類(lèi)化QScreen和QgfxRaster可以實(shí)現硬件加速,從而為屏幕操作帶來(lái)好處。Troll-
tech提供了Mach64和Voodoo3視頻卡的硬件加速的驅動(dòng)例子,同時(shí)可以按照協(xié)議編寫(xiě)其他的驅動(dòng)程序。

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

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



上一頁(yè) 1 2 3 4 5 6 7 8 9 下一頁(yè)

評論


相關(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>