当前位置: 首页 > news >正文

综合性型门户网站有哪些凡科网邮箱登录

综合性型门户网站有哪些,凡科网邮箱登录,上海小程序网站开发公司,深圳企业管理咨询公司1、QAbstractEventDispatcher内容较少,其主要是定义了一些注册接口,如定时器事件、socket事件、注册本地事件、自定义事件等等。其源码如下: 其主要定义了大量的纯虚函数,具体的实现会根据不同的系统平台,实现对应的方…

1、QAbstractEventDispatcher内容较少,其主要是定义了一些注册接口,如定时器事件、socket事件、注册本地事件、自定义事件等等。其源码如下:

 其主要定义了大量的纯虚函数,具体的实现会根据不同的系统平台,实现对应的方法;我主要使用windows编程,其主要是在QEventDispatcherWin32中实现;QEventDispatcherWin32对象的创建主要是在QCoreApplicationPrivate中创建,其代码如下:

另外:QEventDispatcherWin32对象,一个线程中只有一个事件分配器,QThreadData中会保存QAbstractEventDispatcher对象。

2、QEventDispatcherWin32源码中主要实现:a.定时功能(由于定时功能需要使用系统时钟,应该会调用winAPI函数); b.socket事件;c.qt和windows系统之间的事件交互;

 QEventDispatcherWin32的构造函数体为空,直接忽略;

上一节介绍QCoreApplication类时,发现其调用exec函数最终会定位到QAbstractEventDispatcher的processEvents函数,其是QAbstractEventDispatcher最重要的函数之一;

 

 

 由于internalHwnd为空,所以会先调用createInternalHwnd函数,其中定义了windows系统和qt系统交互的方式;

 qt_create_internal_window中创建了一个看不见的windows窗口,并注册其事件监听回调函qt_internal_proc;

 此函数主要是调用TranslateMessage(&msg);及 DispatchMessage(&msg);函数时执行此方法;当消息类型为WM_QT_SENDPOSTEDEVENTS类型时,调用sendPostedEvents函数;

注:sendPostedEvents函数,会调用到QCoreApplicationPrivate类中的sendPostedEvents函数,从而转到qt内部的事件处理。

installMessageHook()函数,定义了WH_GETMESSAGE类型的钩子函数,其主要时监听peekMessage函数的返回值或者监听键盘、鼠标等输入事件;qt_GetMessageHook函数为对应的钩子函数,其实现如下:

其主要是检测消息队列中是否还存在有定时器事件、鼠标、键盘等输入事件的消息,如果不存在,会投递一个WM_QT_SENDPOSTEDEVENTS消息;

继续分析processEvents函数中的剩余内容:

此处主要是检测消息对列中是否有消息需要处理,如果存在消息,取出队列中的消息;

如果存在对应的消息,

 检测消息类型,如果是WM_QT_SENDPOSTEDEVENT类型,则将对应的标志位seenWM_QT_SENDPOSTEDEVENTS标志位置为true;如果为WM_TIMER事件类型,检测是否

已被处理过,如果处理过,直接跳过进入下次循环;如果没有处理加入processedTimers列表中,并稍后会被处理;

检测事件类型是否为WM_QUIT事件,如果是WM_QUIT事件则直接退出;

 检测本地事件过滤器是否处理此事件,如果没有处理则翻译事件、派发事件,并最终转入到qt_internal_proc函数中处理;

 以上部分代码,暂时没有看太懂,后续会接着研究。

至此QAbstractEventDispatcher最重要的processEvent函数已分析完毕;

总结:

1、qt通过注册一个隐藏的windows窗体类(主要时qt_internal_proc钩子函数),接收windows系统中的消息事件,并调用QCoreApplicationPrivate类中的sendPostedEvent函数,切入到qt的事件循环中;

2、qt通过processEvents函数不断捡取windows系统中的消息、自定义消息,并通过windowsAPI中的TranslateMessage函数翻译消息,DispatchMessage派发消息,将事件转入到qt_internal_proc中;

注:关于定时器、socket等事件会放到后续中分析,下一节会切入到QCoreApplication中分析qt内部的事件循环是如何处理的,主要是熟知的sendEvent、postEvent函数的实现;

         

http://www.yayakq.cn/news/664612/

相关文章:

  • 网站建设的常见问题建设企业网站技术解决方案
  • 改变网站的域名空间工作经历怎么写?
  • 河南工信建设网站免费的行情软件网站下载入口
  • 网站如何建数据库浙江建设监理协会网站
  • 西安网站维护兼职做维修那个网站发布信息好
  • 三星做号网站wordpress 坏图片
  • 磐石网站seo宝安第一网站
  • 做网站是学什么专业注册网站怎么注销
  • 良品铺子网站规划和建设网站设计工资
  • 网站建设服务采购方案模板做美团网这种网站赚钱吗
  • 灵璧做网站的公司微网站用什么软件做
  • 违法网站开发网站设计流程的步骤
  • 手机端网站建设郑州网页设计师求职
  • 哪个网络公司做网站好做民宿最大的网站
  • 深圳建站模板公司哪个网站做房子团购
  • 建设部官方网站查询自己建站的网站
  • 海宁住房和城乡规划建设局网站wordpress 单一商品主题
  • 和目网站网站建设业务饱和了吗
  • 汕头网站建设网站小红书推广群
  • linux网站建设技术指南网站建设公司 html5模板
  • 搭建网站需要学什么软件下载关键字c语言
  • 毕业设计网站论文wordpress旅游网站主题
  • html5单页网站模板购物券网站怎么做
  • 怎么用ftp工具上传网站源码手机网站建设代码
  • 番禺南村网站建设企业网站开发市场
  • 网站提示危险怎么办wordpress设置角色
  • 有没有做高仿手表的网站安溪人做的网站
  • 平面设计的素材网站wordpress 播放音乐
  • 杭州市城乡规划局建设局官方网站威海营销型网站建设
  • 网站没有流量怎么回事做i网站