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