QBasicTimer


学习一个概念大致 步骤应该是:

  • 1.从这个概念是什么
  • 2.然后指着一个东西问 这东西是 这个概念吗? 为什么是为什么不是?
  • 3.然后拿着东西去
    • 用的 步骤 或者顺序
    • 用的时候注意的坑
  • 4.然后不断地去深入了解,大致进入迭代,然后回到步骤1的过程

当前环境:Qt 4.8


是什么?

  • QBasicTimer 是一个基础的定时器。

有什么?

class Q_CORE_EXPORT QBasicTimer
{int id;     //当前保存的是id 或者叫 handle ,就是唯一指定的当前这个timer的
public:inline QBasicTimer() : id(0) {}inline ~QBasicTimer() { if (id) stop(); }inline bool isActive() const { return id != 0; }inline int timerId() const { return id; }void start(int msec, QObject *obj);void stop();
};

从代码上看,QBasicTimer具有基本的使用接口

  • isActive 是否在活动
  • timerId 返回当前id
  • start 开始启动timer
  • stop 停止timer

如何用?

看下说明文档:

  • QBasicTimer 给对象提供 定时器事件 ()
The QBasicTimer class provides timer events for objects.
  • 除非调用stop,否则会一直触发QTimerEvent事件

源码

/*!\fn void QBasicTimer::start(int msec, QObject *object)Starts (or restarts) the timer with a \a msec millisecondstimeout.The given \a object will receive timer events.\sa stop() isActive() QObject::timerEvent()*/
void QBasicTimer::start(int msec, QObject *obj)
{stop();if (obj)id = obj->startTimer(msec);
}/*!Stops the timer.\sa start() isActive()
*/
void QBasicTimer::stop()
{if (id) {QAbstractEventDispatcher* eventDispatcher = QAbstractEventDispatcher::instance();if (eventDispatcher)eventDispatcher->unregisterTimer(id);}id = 0;
}

start 代码说明

  • 代码看起来很简单,

    • 就是 先停止
    • 判断对象的指针是否为真
      • 为真,则启动 并设置当前的启动id
  • 这看起来就是简单的命令模式
    • 我们对QObject发送开始命令,并告诉他每隔多久启动timerevent事件
    • 但真正的代码执行不在timer这里
  • 这样也就意味着,我们可以在Object对象内部调用Starttimer

stop 代码说明

  • 这里代码 主要逻辑

    • 判断id是否为真
    • 如果为真
      • 获取事件队列管理
      • 取消注册当前id
    • 最终不管怎样,id设置为0.

QBasicTimer相关推荐

  1. python进度条 pyqt_Python高级进阶#015 pyqt5进度条QProgressBar结合使用qbasictimer

    本期GUI界面,我们继续学习新的控件Qprogressbar. 知识回顾 1.滑动控件qslider 控件设置的关键:设置最大值.最小值,绝对范围. 2.核心类库QtCore,枚举类Qt 核心枚举类的 ...

  2. Qt定时器QBasicTimer、startTimer、QTimer使用总结

    QBasicTimer 这个定时器类是一个 轻量级的.较底层的.被Qt内部使用的定时器类.如果在你的应用程序中使用定时器类,推荐使用QTimer类,而不是这个类.该类和QTimer类类似,也提供sta ...

  3. 一口气用 Python 写了13个小游戏,摸鱼达人!

    来源 | Python小二 1.吃金币 源码分享: import os import cfg import sys import pygame import random from modules i ...

  4. 500行代码写一个俄罗斯方块游戏

    导读:本文我们要制作一个俄罗斯方块游戏. 01 俄罗斯方块 Tetris 俄罗斯方块游戏是世界上最流行的游戏之一.是由一名叫Alexey Pajitnov的俄罗斯程序员在1985年制作的,从那时起,这 ...

  5. Qt 控制watchdog app hacking

    /*************************************************************************** Qt 控制watchdog app hacki ...

  6. pyqt5实战之幻彩大蛇(贪吃蛇)-1

    from PyQt5.QtWidgets import QWidget, QApplication, QMessageBox, QInputDialog from PyQt5.QtGui import ...

  7. 500 行代码写一个俄罗斯方块游戏

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 导读:本文我们要制作一个俄罗斯方块游戏. 作者 | 派森 ...

  8. PyQt4 进度条和日历 代码

    # -*- coding: utf-8 -*- """ -------------------------------------------------File Nam ...

  9. pyqt5教程9:Widgets组件

    PyQt5 widgets 小部件是应用程序的基本构建块. PyQt5 有各种各样的小部件,包括按钮.复选框.滑块或列表框.在本教程的这一部分,我们将描述几个有用的小部件:QCheckBox.切换模式 ...

最新文章

  1. 【C#】第3章学习要点(三)--常用类和结构的用法
  2. 二叉搜索树(BFS)总结
  3. PyTorch基础(五)----- torch.cat()方法
  4. boost::contract模块实现push button的测试程序
  5. Luogu P1198 [JSOI2008]最大数 线段树
  6. 【渝粤教育】广东开放大学 房屋建筑学 形成性考核 (50)
  7. word中填充效果锁定纵横比_【文艺范】Word文档中的首字下沉效果
  8. 微信公共账号学习笔记 _ 感想 爪机码字
  9. java调用mac终端命令_JAVA之前 - mac终端命令行
  10. html半透明遮罩,div半透明遮罩效果
  11. 转码解密挖矿 显卡计算能力大对比
  12. [JavaScript][AJAX] 前后端交互流程,ajax工作流程
  13. FFmpeg的HEVC解码器源代码简单分析 解析器(Parser)部分
  14. dof景深matlab,CG制作景深(DOF)的方法
  15. 第三章 中国To B企业,如何转型?
  16. git初步使用(登录和创建仓库)
  17. 洞见云计算的时代野望,第八届全球云计算大会·中国站即将启幕
  18. 如何安装SPSS软件
  19. driver,bus,device
  20. 在laravel中集成swoole,使用hhxsv5/laravel-s扩展

热门文章

  1. Photos(PHAsset)
  2. 省视自己,缺点希望改变
  3. 植物大战僵尸2付费分析
  4. 面试官:你期望薪资是多少?这样回答让你多拿3000
  5. css中outline的使用
  6. linux系统镜像怎么克隆好友,使用SystemImager克隆Linux系统
  7. 微服务设计指导-通过一个生产事故的具体例子来看微服务
  8. 明明已经安装了第三方库,但是Pycharm中却提示库不存在的解决办法
  9. windows消费者预览版的出用感受
  10. ubuntu14.04 有一些软件包无法被安装。如果您用的是 unstable 发行版,这也许是 因为系统无法达到您要求的状态造成的。该版本中可能会有一些您需要的软件 包尚未被创建或是它们已被从新到(