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

深圳的网站建设公司官网推广官网

深圳的网站建设公司官网,推广官网,上海金融网站建设,网站功能型和展示型的区别qt定时器的使用一般有以下几种方式: 1、直接使用QTimer对象,绑定定时器的timeout信号; 2、使用QTimer的静态方法singleshot方法,产生一个一次性的定时事件 3、在QObject子类中,调用startTimer方法,产生定…

qt定时器的使用一般有以下几种方式:

1、直接使用QTimer对象,绑定定时器的timeout信号;

2、使用QTimer的静态方法singleshot方法,产生一个一次性的定时事件

3、在QObject子类中,调用startTimer方法,产生定时器,并在timerEvent方法中实现其处理;

以上三种方法,本质上都是继承QObject类,调用QObject的startTimer,killTimer方法等实现的;

QObject类中定时器相关的方法有:startTimer、killTimer、timerEvent三个方法;

startTimer源码如下:

startTimer的实现比较简单,主要是向eventDispatcher中注册定时器事件;QAbstractEventDispatcher中registerTimer的实现如下:

生成一个定时器的id,并调用派生类的registerTimer的函数;

 将定时器相关信息保存在WinTimerInfo结构中,并调用QEventDispatcherWin32Private类中的registerTimer方法;

 首先会重新计算定时的时间间隔,调用calculateNextTimeout方法;

如果是非常粗糙的定时方式或者定时时间超过2s,且定时器类型不是精确定时,则定时器的触发时间存在500ms左右的偏差;

QZeroTimerEvent事件

如果定时时间间隔为0ms,则会调用qt的postEvent方法,向QEventDispatcherwin32对象抛一个QZeroTimerEvent事件,切入到qt的事件循环中;通过上几节介绍可知,通过postEvent抛出的事件最终会进入到qt_internal_proc方法中;

 最终会进入到q->sendPostedEvents()方法中,

几经周转,会进入到QEventDispatcherWin32的event方法中,此处是ZeroTimerEvent事件,会调用QCoreApplication::sendEvent方法,向定时器事件的QObject对象发送一个QTimerEvent事件,从而转入到QObject的event方法中执行;并在此抛出一个QZeroTimerEvent事件;

回到registerTimer方法中:

PreciseTimer事件

如果定时器事件类型为精确定时,会调用windows操作系统的timerSetEvent接口,实现精确定时,定时精度1ms,其对应的回调函数qt_fast_time_proc方法如下:

 其会在回调函数中向QEventDispatcherWin32对象post一个QTimerEvent事件;最终进入到QEventDispatcherWin32的event函数中,调用其sendTimerEvent函数,其定义如下:

 在其方法中会调用QCoreApplication的sendEvent函数,最终切入到QObject的event函数中;

VeryCoarseTimer事件

精度要求不高的事件,会调用windows API的setTimer函数,注册一个定时器事件,此事件的回调函数为nullptr,qt会使用windows系统产生的WM_TIMER事件;最终会被qt_internal_proc回调函数捕获到;

其会直接调用QEventDispatcherWin32函数的sendTimerEvent方法;其余执行流程同上;

总结:

1、qt定时器会产生3种类型的定时事件 ,QZeroTimerEvent事件、QTimerEvent(PreciseTimer),QTimerEvent(VeryCoarseTimer、CoarseTimer);

2、当定时间隔为0时,会产生QZeroTimerEvent事件,其由QCoreApplication的postEvent方法切入到qt的事件循环中,几经周转在此回到QEventDispatcher类中执行;

3、当定时的精度要求比较高时,可以使用PreciseTimer事件类型,其调用weindowsAPI的timerSetEvent接口实现高精度定时,并在其回调函数中调用postEvent方法切入到qt的事件循环中处理;

4、当定时精度要求不高时,可以使用默认事件类型即VeryCoarseTimer事件类型,其会调用windowsAPI的setTimer接口,并产生WM_TIMER事件,切入到qt的事件循环中;

5、CoarseTimer事件类型,会根据其时间间隔决定产生的是精确定时还是粗糙的定时方式。

http://www.tj-hxxt.cn/news/69829.html

相关文章:

  • 响应式网站 图片处理深圳网站设计三把火
  • 添加网站备案号链接搜索引擎优化的七个步骤
  • 两学一做山西答题网站东莞市网络seo推广企业
  • 怎样帮人做网站挣钱网络营销主要是什么
  • 手机购物网站 建站外国搜索引擎登录入口
  • seo快速排名网站优化爱用建站
  • 南海做网站百度推广关键词价格查询
  • wps2016怎么做网站网搜网
  • 全国做网站的公司今日最新头条新闻条
  • 天津网站制作网站正能量免费推广软件
  • 做最最优秀的视频网站外贸seo优化公司
  • 公安部网站备案要多久建网站用什么软件
  • 电商网站开发系统架构百度搜索引擎优化公司哪家强
  • 日本设计师个人网站创意营销
  • 中午网站做google广告好吗网站404页面怎么做
  • 网站建设明细报价表360推广登录入口官网
  • 怎么做国外的网站推广百度下载免费安装最新版
  • 网站内页怎么做seo百度搜索
  • 做网站难还是app难联盟营销平台
  • 传统企业如果建立网站怎么做好推广
  • 网站的跟目录市场推广怎么做
  • wordpress元关键词seo每日一帖
  • R2D安装wordpress深圳百度seo优化
  • 用js做自适应网站百度手机助手应用商店下载
  • 锦州市城乡建设委员会官方网站阿里指数app下载
  • 贵州网站制作设计公司哪家好市场调研报告范文模板
  • 捕鱼网站怎么做seo运营专员
  • 门户网站功能模块深圳百度推广竞价托管
  • 做链接的网站网上广告宣传怎么做
  • 做网做网站建设网址查询网站