QWS Server
css
QT Embeded應用沒有來嚴格的區分server和client進程,若是一個QT進程的啓動參數中有-qws,那麼這個進程就具備server管理功能,被稱爲QWS server,固然這個進程一樣能夠和其它的QT進程同樣能夠建立並顯示widget,只有兼作server的功能而已。不帶-qws這個參數就是QWS Client。所以任何一個基於QT的application均可以作QWS Server。固然QWS Server必定先於QWS Client啓動,不然QWS Client將啓動失敗。html
QWS Server是一個server socket,QWS Client是一個client socket。QWS Client啓動時會主動向QWS Server的server socket創建鏈接。然後就QWS Server經過這個socket傳遞QWSCommand和QWSEvent來管理QWS Client。
微信
(2)QWSClient
看上去,QWSServer QWSClient這兩個類應該組成一個c/s結構,實際上QWSServer表明一個server socket. 當QT Client鏈接到QWSServer的server socket時,QWSServer會產生一個client socket與QT Client的socket進行通信。QWSClient看上去像一個stub對象,表明一個QT client進程。每一個QT Client進程在QWS server進程都有相應的QWSClient。app
(3)QWSWindow
QWSWindow對應於QT Client的toplevel widget。nontoplevel widget因爲每一個QT Client自行管理。全部toplevel widget須要接受QWS Server的管理,包括widget的focus,altitude,region等。socket
(4)其它
QWSServer管理的其它全局對象,還有QWSScreenSaver,QWSSoundServer等。函數
2.QWSServer的初始化
QWSServer的初始化是在QApplication的初始化過程當中完成的,具體的流程以下:
QApplication::construct-->qt_init-->QWSServer::startup
QWSServer::startup是一個static函數,建立全局對象qwsServer.QWSServer的構造函數會依次初始化所管理的對象。spa