• 11047阅读
  • 5回复

QWSServer 类如何理解 ?? [复制链接]

上一主题 下一主题
离线acheng210
 
只看楼主 倒序阅读 楼主  发表于: 2006-05-19
  请问 QT/Embeded QT类QWSServer和QApplication 两个类有什么联系么???  我的程序A中如果把一个QApplication设置为 server 类型,那么是不是说明我的程序A就成为Server了??它会替代QT的默认Server,为各种client程序提供server平台,而不再使用系统默认的server了???
我在qt/embeded 中看到有一个全局的变量(在 qt-emb-2.3.8/include/qwindowsystem_qws.h 定义)
                extern QWSServer *qwsServer;  //there can be only  

  那么是不是会将程序A 设置给 qwsServer  ??  也就是说会进行qwsServer = A  的这样的操作???
然后以后的程序A就变为系统server??

确认一下!!菜鸟新手请教大家了!! *_*
[ 此帖被shiroki在2009-08-28 10:24重新编辑 ]
离线acheng210
只看该作者 1楼 发表于: 2006-05-19
其实也就是想问一下,QApplication 的 QApplication::GuiServer 类型运行的话是什么意思 *_* 看assistant还是不是很明白....
谢谢大家了!!!!
离线acheng210
只看该作者 2楼 发表于: 2006-05-19
刚才子西研究了一下, 发现我的开始的想法是不对的.....

我现在的理解是QApplication在初始花时实例化了一个 QWSserver ,同时赋值给上面的那个全局的 extern   QWSServer *qwsServer,此时,qwsServer 在程序中主要负责事件的服务分发,比如 QWSServer中的三个Singal :

void windowEvent ( QWSWindow * w, QWSServer::WindowEvent e )   [note : 我的assitant是qt3.1.1,qte好
                                  想有点不同,好想是什么 ApplicationEvent 吧 ]
void newChannel ( const QString & channel )
void removedChannel ( const QString & channel )

特别是第一个signal,主要在top-level window窗口转换时 emit 的,而其他两个主要勇于create/remove 程序中的channel [问: 是不是在client 程序中的create/remove channel 也会发送??] 时 emit 的,,,,,

同时, QWSServer也能发送sendKeyEvent 和 sendIMEvent 等等,,,( from assistant )
同事QWSServer也能设置 setKeyboardFilter(键盘过滤函数) ,在这里有一个sample 大家可疑看一看 *_*
http://www.mis.mit.edu.tw/docs/docs/qt-embedded-devel-2.3.2/examples/launcher/launcher.cpp

还有设置mouse设备 setDefaultMouse( const char * m ),打开/关闭mouse设备的函数:openMouse (),closeMouse ()   以及设置keyboard 设备,打开关闭 keyboard 的操作

以上这些我是看assistant 的理解,,,,
总结一下:如果QApplication设置成了GUI::Server模式,那么在QApplication初始化时就会实例化上面的哪个全局变量qwsServer,那么我们就能在该QApplication 程序中,对qwsServer 由于事件改变而emit的三个Singal :
windowEvent,newChannel ,removedChannel 进行connent,之后进行自定义的处理....
而如果QApplication不是设置成了GUI::Server模式,那么qwsServer是否就为0 ???我认为是0,,,,那么我们就不能使用qwsServer参数了,,,

顺这这个思路,我们就能明白QApplication设置成了GUI::Server模式的作用了,,,就是一个server的角色,他能够捕捉运行在其上的 client 程序的发生的动作,同事也能设置所有程序的mouse ,,keyboard等等....

图:

| client App1 | || client App2 |   | client App3 |   | client App4 |
-------------------------------------------------------------
        |     Server   |


更漂亮的如:
    http://www.uml.org.cn/embeded/200510181.htm

以上是我的理解,share一下,刚开始作QT,不到2周,希望大家支出有误的地方,一起交流!!

谢谢!!!! 写到好累......


离线milong
只看该作者 3楼 发表于: 2006-06-07
其实QWS就是Qt Widget Server的意思, 在运行所有的Qt程序之前必须要有个QWS的实例.
离线shiroki

只看该作者 4楼 发表于: 2006-06-07
这么好的帖子怎么不发到embedded版去阿, 大家一起研究研究嘛
--
shiro is White
ki is tree
http://www.cuteqt.com
论坛 http://www.cuteqt.com/bbs
博客 http://www.cuteqt.com/blog
博客镜像: http://sites.cuteqt.com/cuteqt
Linux/Qt/嵌入式讨论群 http://qun.qq.com/air/5699823
离线lee51525125
只看该作者 5楼 发表于: 2009-08-28
不是吧.qws 是QTE 里面的东东吧不是3楼说的所有qt吧.还有你们找到生成qwsServer的代码断了吗,指出来下研究下哈.
快速回复
限100 字节
 
上一个 下一个