QWS(Qt Windows System)是QT自行開發的窗口系統,體系結構相似X Windows的C/S結構。QWS Server在物理設備上顯示,QWS Client實現界面,二者經過socket進行彼此的通信。在不少嵌入式系統裏,QT程序基本上都是用QWS來實現,這樣保證程序的可移植性。程序員
在運行QT程序時添加-qws參數,表示這個程序是QWS Server,不然是QWS Client。任何一個基於QT的application均可以作QWS Server。QWS Server必定先於QWS Client啓動,不然QWS Client將啓動失敗。在實際應用中通常會指定某個特殊的application作QWS Server,這個application通常還會管理一些其它的系統資源。web
QWS Server管理機制:QWS Server是一個server socket,QWS Client是一個client socket。QWS Client啓動時會主動向QWS Server的server socket創建鏈接。然後QWS Server經過這個socket傳遞QWS Command和QWS Event來管理QWS Client。數據庫
QPA (Qt Platform Abstraction)是QT5的平臺抽象層,並取代QT4中的QWS和平臺端口。從QT5開始,QT自身再也不單獨實現窗口系統,QWS不復存在,取而代之的新機制是QPA,QPA使得QT對不一樣平臺的支持變得更加靈活,當須要支持一個新平臺時,只需爲該平臺編寫一個QPA插件。QPA的相關代碼分別在qtbase/serc/gui/kernel/qplatform/目錄下,以及平臺抽象層插件在qtbase/src/plugins/platforms/目錄下。編程
QT4的程序在嵌入式Linux運行時,須要加入參數「-qws」啓動QT窗口系統服務,如「./app -qws」運行app程序。QT5的程序運行時根據QT_QPA_PLATFORM變量指定的默認QPA插件,運行app程序, 也能夠根據須要經過「-platform」來指定QPA插件運行,如:./app -platform eglfs、./app -platform sylixosfb。瀏覽器
QT做爲GUI界面庫,提供了不一樣功能模塊的編程接口,例如基本控件庫、數據庫操做、圖表庫、瀏覽器控件、以及3D模塊。另外QT也提供一種相似HTML解釋性腳本語言QML,而且與JavaScrip腳本的交互,提供了良好的接口操做。程序員能夠經過C++和QML語言開發應用程序。如圖 1.1所示:app
圖 1.1 qt應用程序示例socket
經過圖 1.1客戶端程序分析QT程序初始化流程。一個客戶端程序建立的時候,都會首先建立一個QApplication app對象,它爲客戶端程序提供必須的運行環境。具體流程如圖 1.2所示:ui
圖 1.2 QApplication加載流程spa
QGuiApplication在QT程序初始化中處於重要的地位,它主要初始化父類、解析命令行輸入、初始化窗口的風格、初始化QPA、加載QT插件、初始化Gui資源、以及初始化OpenGL上下文環境。如圖 1.3所示:插件
圖 1.3 GUI初始化核心階段
在QT5中能夠根據不一樣系統提供QPA插件,爲客戶端程序提供顯示服務,在SylixOS系統下,提供platform/plugin/sylixosfb 平臺抽象層插件,爲QT客戶端程序提供渲染運行環境。如圖 1.4所示:
圖 1.4 建立SylixOS QPA插件
QCoreApplication爲客戶端程序提供國際化支持、以及事件分發機制。
Detect languageAfrikaansAlbanianAmharicArabicArmenianAzerbaijaniBasqueBelarusianBengaliBosnianBulgarianCatalanCebuanoChichewaChinese (Simplified)Chinese (Traditional)CorsicanCroatianCzechDanishDutchEnglishEsperantoEstonianFilipinoFinnishFrenchFrisianGalicianGeorgianGermanGreekGujaratiHaitian CreoleHausaHawaiianHebrewHindiHmongHungarianIcelandicIgboIndonesianIrishItalianJapaneseJavaneseKannadaKazakhKhmerKoreanKurdishKyrgyzLaoLatinLatvianLithuanianLuxembourgishMacedonianMalagasyMalayMalayalamMalteseMaoriMarathiMongolianMyanmar (Burmese)NepaliNorwegianPashtoPersianPolishPortuguesePunjabiRomanianRussianSamoanScots GaelicSerbianSesothoShonaSindhiSinhalaSlovakSlovenianSomaliSpanishSundaneseSwahiliSwedishTajikTamilTeluguThaiTurkishUkrainianUrduUzbekVietnameseWelshXhosaYiddishYorubaZulu |
|
AfrikaansAlbanianAmharicArabicArmenianAzerbaijaniBasqueBelarusianBengaliBosnianBulgarianCatalanCebuanoChichewaChinese (Simplified)Chinese (Traditional)CorsicanCroatianCzechDanishDutchEnglishEsperantoEstonianFilipinoFinnishFrenchFrisianGalicianGeorgianGermanGreekGujaratiHaitian CreoleHausaHawaiianHebrewHindiHmongHungarianIcelandicIgboIndonesianIrishItalianJapaneseJavaneseKannadaKazakhKhmerKoreanKurdishKyrgyzLaoLatinLatvianLithuanianLuxembourgishMacedonianMalagasyMalayMalayalamMalteseMaoriMarathiMongolianMyanmar (Burmese)NepaliNorwegianPashtoPersianPolishPortuguesePunjabiRomanianRussianSamoanScots GaelicSerbianSesothoShonaSindhiSinhalaSlovakSlovenianSomaliSpanishSundaneseSwahiliSwedishTajikTamilTeluguThaiTurkishUkrainianUrduUzbekVietnameseWelshXhosaYiddishYorubaZulu |
|
|
|
|
|