QT Embedded二三事之QWSServer

來源:互聯網
上載者:User

       QT Embeded應用沒有來嚴格的區分server和client進程,如果一個QT進程的啟動參數中有-qws,那麼這個進程就具有server胡管理功能,被稱為QWS server,當然這個進程同樣可以和其它的QT進程一樣可以建立並顯示widget,只有兼做server的功能而已。
 這個所謂的server功能主要是由QWSServer對象來實現的。
     

1.QWSServer的管理對象

      
(1)keyboard裝置和mouse裝置
        keyboard和mouse是一個display系統的輸入裝置,在QT Embedded中,QWSServer會初始化keyboard和mouse裝置,並對其管理。讀取key事件和mouse事件,並傳送給相應的應用程式。
        至於diplay系統中的顯示裝置screen,這不是由QWSServer統一管理的,為了提高效率,每個QT Client都可以開啟這個裝置,並向screen讀寫,以實現顯示功能。但是每個QT client都向screen讀寫,螢幕會不會寫亂了? 在QT中,這部分工作是由一個叫做QWSRegionManager的對角來管理的,以後再詳細說明。

       (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。

       (3)QWSWindow
       QWSWindow對應於QT Client的toplevel widget。nontoplevel widget由於每個QT Client自行管理。所有toplevel widget需要接受QWS Server的管理,包括widget的focus,altitude,region等。

      
(4)其它
      QWSServer管理的其它全域對象,還有QWSScreenSaver,QWSSoundServer等。

     2.QWSServer的初始化
     QWSServer的初始化是在QApplication的初始化過程中完成的,具體的流程如下:
     QApplication::construct-->qt_init-->QWSServer::startup
     QWSServer::startup是一個static函數,建立全域對象qwsServer.QWSServer的建構函式會依次初始化所管理的對象。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.