【Qt开发】关于QWSServer
QWS Server
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将启动失败。
QWS Server是一个server socket,QWS Client是一个client socket。QWS Client启动时会主动向QWS Server的server socket建立连接。而后就QWS Server通过这个socket传递QWSCommand和QWSEvent来管理QWS Client。
这个所谓的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的构造函数会依次初始化所管理的对象。
【Qt开发】关于QWSServer的更多相关文章
- win使用MSYS2安装Qt开发环境
原文链接 MSYS2 下载地址: pacman的具体用法 有pacman的具体使用方法.我们首先对系统升级 我们首先对系统升级 pacman -Syu 就会检测整个系统可以升级的组件,并自动下载安装, ...
- 细数Qt开发的各种坑(欢迎围观)
1:Qt的版本多到你数都数不清,多到你开始怀疑人生.从4.6开始到5.8,从MSVC编译器到MINGW编译器,从32位到64位,从Windows到Linux到MAC.MSVC版本还必须安装对应的VS2 ...
- 用Qt开发第一个Hello World程序
配置好Qt的环境变量之后,我们才可以进行下面的通过终端来使用Qt开发这个第一个程序 因为Qt的文件路径不能有中文否则会报错,所以一般都把工程文件都建立在根目录 我们创建的Qt程序包含两个部分:1.GU ...
- 第一章 搭建Qt开发环境
第一章 搭建Qt开发环境 1.到http://download.qt-project.org/archive/上下载Qt的源码包.我下载的是qt-everywhere-opensource-src-4 ...
- Ubuntu 12.04下搭建Qt开发环境
http://download.qt.io/official_releases/qt/ Ubuntu 环境下Gtk与Qt编译环境安装与配置(系统环境是Ubuntu 12.04) 1.配置基础开发环境G ...
- QT开发pjsip的VOIP,A8平台运行
QT开发pjsip的VOIP 开发环境 平台:A8 环境:Linux-3.0.8 实现功能:使用QT开发VOIP进行初始化.拨号.挂起 测试工具:minisipserver服务器 效果 界面: min ...
- 基于QT开发的第三方库
基于Qt开发的第三方库 分类: Qt2014-02-12 11:34 1738人阅读 评论(0) 收藏 举报 QT第三方库 目录(?)[+] 文章来源:http://blog.csdn.net ...
- qt学习教程1.qt开发环境搭建
qt学习教程1.qt开发环境搭建 首先下载qt 下载地址:http://download.qt.io/archive/qt/ 此教程使用的版本为5.1.1 下载好后,打开安装包,然后点下一步 选择一个 ...
- Qt 开发 MS VC 控件终极篇
Qt 开发 MS VC 控件终极篇 1. 使用 MSVC2015 通过项目向导创建 Qt ActiveQt Server 解决方案 项目配置:以下文件需要修改 1. 项目属性页->项目属性-&g ...
- VS2008下QT开发环境搭建(转)
原博文地址:http://blog.csdn.net/sunnyboycao/article/details/6364444 VS2008集成QT4.7.2环境搭建 作者:jimmy 日期:2011- ...
随机推荐
- JMeter性能测试工具
1.官网资源 地址:https://jmeter.apache.org/download_jmeter.cgi window下载zip版本 options配置-选择语言-简体(jmeter.prope ...
- 【vue】vue-cli中 对于public文件夹的处理
pubcli和assets文件夹都是用来存储静态资源的,: [assets文件夹] 通过相对路径被引入,这类引用会被webpack处理: 比如: 会被编译成: 再比如: 会被编译成: [public文 ...
- [Number]js中数字存储(0.1 + 0.2 !== 0.3)
和其他编程语言(如 C 和 Java)不同,JavaScript 不区分整数值和浮点数值, 所有数字在 JavaScript 中均用浮点数值表示,遵循IEEE754标准,在进行数字运算的时候要特别注意 ...
- SQL审核 Inception 中小团队快速构建SQL自动审核系统
SQL审核与执行,作为DBA日常工作中相当重要的一环,一直以来我们都是通过人工的方式来处理,效率低且质量没办法保证.为了规范操作,提高效率,我们决定引入目前市面上非常流行的SQL自动审核工具Incep ...
- Oracle 数据库SQL审计
在我们日常的工作中,一些安全性的要求高的数据库需要增加审计操作,哪个用户什么时间做了什么操作. 1.打开数据库的审计 alter system set audit_sys_operations=TRU ...
- c语言中sprintf()函数中的%使用
#include <stdio.h> #include <string.h> int main() { ] = {}; ] = {}; ] = {}; /*打印2个%*/ st ...
- go - GOPATH配置
查看配置信息 go env 然后找到对应的 GOPATH=>修改为你自己的目录 ..liunx 系统下,注意要给权限 go bulid 编译文件 go run 先编译后执行. -------- ...
- OpenPyXl的使用
OpenPyXl的使用 开始在内存中使用 创建一个workbook 在刚开始使用openpyxl的时候,不需要直接在文件系统中创建一个文件,仅仅需要导入Workbook类并开始使用它: >> ...
- 创建jQuery节点对象
现在的年轻人,经历旺盛,每天都熬夜,今天又晚了,现在才更新博客,今天更新jquery入门之对节点的操作,内容简单好掌握.认真的燥再来吧. 1.$("<li class="li ...
- wqy的B题
wqy的B题 题意: 和一道叫机器翻译的题差不多,不过这道题要难一些,没有规定必须删除最早入队的. 解法: 解法和[POI2005]SAM-Toy Cars这道题差不多,考虑贪心. 每次选取下一次使用 ...