- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
事件是GUI应用的核心概念,GUI应用就是通过执行一个个事件来完成其功能的。围绕事件而设计的事件循环,事件分发,事件截取(hook),这些都是GUI Framework的核心部分和运行的基础,是把其它所有对象联接起的纽带。在QT中,事件循环和事件机制被封装在QEventLoop中。本文就简略介绍一下,QT中的事件运行机制。 1.事件分类 QT中的事件主要有如下几种: (1)QWSEvent和QWSCommand 这是QWSClient和QWSServer通讯所使用的事件,QWS Client向QWS Server发送QWSCommand请求,QWS Server向QWS Client返回QWSEvent响应。 QWSEvent和QWSCommand是client与server通讯所使用的socket事件转换来的。 QWSEvent事件保存在QApplication::Data的QPtrListQWSEvent queue中。 QWSCommand保存在QWSServer的QPtrListQWSCommandStruct commandQueue中; (2)QEvent QEvent是在QWS Client内部各个QObject使用的事件。封装了各种窗口消息:QShowEvent,QFocusEvent,QMoveEvent等。 QEvent主要使用sendEvent和postEvent发送出去的,sendEvent是同步消息,相当同步调用,不会经过事件循环,不保存,直接调用QObject::event()。postEvent是异步调用,先把事件放在globalPostedEvents队列中,在QEventLoop::processEvents中,会循环检查globalPostedEvents。 (3)QSocket事件 QSocket事件是类型为QEvent::SockAct的QEvent,但是其处理方法和一般的QEvent不一样。 QSocket事件可以用来处理进程通讯,QWSEvent/QWSCommand事件就是通过QSocket传调的,QSocket由QEventLoop管理。 (4)QTimer事件 和QSocket事件一样QTimer就是类型为QEvent::Timer的QEvent,但是其处理方法和一般的QEvent不一样。 QTimer事件放在全局对象:static TimerList *timerList。 2.QSocket和QEventLoop QSocket和一个socket fd绑定在一起,每个socket fd都可以三种动作:read, write,exception。每一个动作由一个QSocketNotifier来封装。 QSocketNotifies通过QEventLoop::registerSocketNotifier注册到QEventLoop中,通过QEventLoop::unregisterSocketNotifier取消注册。 QEventLoop使用QSockNot封装一个QSocketNotifier和相应的操作类型,装同属于一类型操作的QSockNot封装到QSockNotType中,建立起同一类操作的select_fds队列,直接用于select使用。 QEventLoop根据socket fd的三种操作(read/write/exceptions)共保存三类QSockNotType。 3.QEventLoop::processEvents QEventLoop::processEvents是一次事件循环调用,分别查看各类事件列队是否由事件。QApplication::exec/QEventLoop::exec/QEventLoop::enterLoop就是循环调用QEventLoop::processEvents。 下面针对QEventLoop::processEvents的实现,说明事件的分发过程。 bool QEventLoop::processEvents( ProcessEventsFlags flags ) { // process events from the QWS server int nevents = 0; ...... // handle gui and posted events if (qt_is_gui_used ) { //a.首先执行globalPostedEvents队列中的事件,这些事件都是通过QApplication::postEvent或QThread::postEvent发送的 QApplication
您可能关注的文档
- cad重要快捷命令.docx
- 3.1 以人为本 科学发展 · 练习题.doc
- cmwap无限量卡3G上网全攻略.doc
- 大话水浒名将信息大全.doc
- 食品检验工(中级)试题精选(2).doc
- 数学组小课题开题报告(审过).doc
- 网络编辑(文章写法).doc
- 软件版本发布命名规则.docx
- vba从关闭问卷中提取数值.docx
- C++基础笔试题目.docx
- DB23_T 3866-2024冰上龙舟赛事组织服务规范.docx
- DB32 2163-2012 棉纱单位可比综合电耗限额及计算方法.docx
- DB32∕T 2429-2013 棉花田间生长发育观察记载规范.docx
- DB23_T 3820-2024 工业互联网综合平台数据质量管理规范.docx
- DB23_T 3474-2023非煤智慧矿山信息系统技术规范.docx
- DB3201_T 1106-2022 工程地质层划分技术规范.docx
- DB33T 2515-2022公共机构“零碳”管理与评价规范.docx
- DB3301_T 0415-2023 装修垃圾收运处置管理规范.docx
- DB3311/T 106―2019“丽水山居”民宿服务要求与评价规范.docx
- DB3201T 1127-2022 慈善捐赠受赠管理规范.docx
最近下载
- 亿赛通电子文档安全管理系统V5.0--客户端使用手册V1113379.pdf VIP
- [标准规范]煤矿窄轨铁道维修质量标准及检查评级办法(精编).doc VIP
- 人教统编版小升初语文总复习专题七:句式变换课件(共28张PPT).ppt VIP
- 2025重庆永川区板桥镇村(社区) 后备干部选拔笔试备考试题及答案解析.docx VIP
- 深度解析《GBT 44026-2024预制舱式锂离子电池储能系统技术规范》.pptx
- 品质部各岗位职责说明书.pdf VIP
- 2022.01 深圳南山红花岭工业区城市更新项目一期建筑方案设计 华艺.pdf VIP
- 电冰箱安全技术规程培训.pptx VIP
- 07FK02 防空地下室 通风设备安装.pdf VIP
- 解决我国农民负担问题的路线图设想-中国发展.pdf
文档评论(0)