Qt/E服務(wù)器客戶端架構(gòu)
Qt / E是專門為嵌入式系統(tǒng)開發(fā)的GUI平臺,因此它并沒有像Qt/X11版一樣依賴復(fù)雜的X-Server,而是專門針對嵌入式平臺特性開發(fā)了簡化且高效的Server端,底層只支持Frame buffer設(shè)備,兩者之間的通信方式仍然采用Unix域Socket,但是通信協(xié)議相比X11大大簡化,這樣在保證API一致性的前提下,提供了跨平臺的支持。采用專用的服務(wù)器客戶端架構(gòu)是Qt/E與桌面系統(tǒng)最大的不同。同時(shí)由于Qt/E版的Server端相對簡單,并且為了適應(yīng)嵌入式系統(tǒng)硬件平臺的巨大差異做了很多兼容工作,也使得對于Qt/E的移植相對比較容易,只要實(shí)現(xiàn)鼠標(biāo),鍵盤,屏幕相應(yīng)的驅(qū)動(dòng)就可以實(shí)現(xiàn)Qt/E的移植。
所有的Qt圖形應(yīng)用程序要運(yùn)行就必須連接到Qt 服務(wù)器,Qt服務(wù)器負(fù)責(zé)管理鼠標(biāo),鍵盤,屏幕這些輸入輸出設(shè)備,同時(shí)還進(jìn)行窗口管理,處理窗口重疊,移動(dòng),焦點(diǎn)轉(zhuǎn)換,字體管理,輸入法管理等。而Client端則是在窗口內(nèi)部進(jìn)行Widget的管理,繪制,以及文件,網(wǎng)絡(luò)等其他操作,等待服務(wù)器端傳遞過來的用戶輸入事件,然后在繪制完畢以后發(fā)消息通知服務(wù)器,由服務(wù)器進(jìn)程控制顯示(對于支持Direct Painting的設(shè)備,是直接繪制到顯示設(shè)備上)。
下圖是Qt/E的客戶端服務(wù)器架構(gòu):
由于Qt設(shè)計(jì)時(shí)出于資源節(jié)省的考慮以及靈活性,服務(wù)器進(jìn)程并不是一個(gè)單獨(dú)的進(jìn)程,而是第一個(gè)啟動(dòng)的Qt圖形應(yīng)用程序,它既是客戶端進(jìn)程,也是服務(wù)器端進(jìn)程,從程序設(shè)計(jì)的角度來說它可以和正常的客戶端進(jìn)程表現(xiàn)完全一致,但是它卻掌管著對所有的設(shè)備的訪問,這樣的設(shè)計(jì)會導(dǎo)致Qt架構(gòu)內(nèi)部不是那么清晰,但是好處也是非常明顯的,因?yàn)榉?wù)器端進(jìn)程同時(shí)也是一個(gè)客戶端進(jìn)程,可以直接和用戶進(jìn)行一些特殊的交互,比如像Qt/E中的輸入法設(shè)計(jì)等等。
【編輯推薦】
手機(jī)應(yīng)用客戶端瞄準(zhǔn)移動(dòng)消費(fèi)需求






















