QBasicTimer
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相关推荐
- python进度条 pyqt_Python高级进阶#015 pyqt5进度条QProgressBar结合使用qbasictimer
本期GUI界面,我们继续学习新的控件Qprogressbar. 知识回顾 1.滑动控件qslider 控件设置的关键:设置最大值.最小值,绝对范围. 2.核心类库QtCore,枚举类Qt 核心枚举类的 ...
- Qt定时器QBasicTimer、startTimer、QTimer使用总结
QBasicTimer 这个定时器类是一个 轻量级的.较底层的.被Qt内部使用的定时器类.如果在你的应用程序中使用定时器类,推荐使用QTimer类,而不是这个类.该类和QTimer类类似,也提供sta ...
- 一口气用 Python 写了13个小游戏,摸鱼达人!
来源 | Python小二 1.吃金币 源码分享: import os import cfg import sys import pygame import random from modules i ...
- 500行代码写一个俄罗斯方块游戏
导读:本文我们要制作一个俄罗斯方块游戏. 01 俄罗斯方块 Tetris 俄罗斯方块游戏是世界上最流行的游戏之一.是由一名叫Alexey Pajitnov的俄罗斯程序员在1985年制作的,从那时起,这 ...
- Qt 控制watchdog app hacking
/*************************************************************************** Qt 控制watchdog app hacki ...
- pyqt5实战之幻彩大蛇(贪吃蛇)-1
from PyQt5.QtWidgets import QWidget, QApplication, QMessageBox, QInputDialog from PyQt5.QtGui import ...
- 500 行代码写一个俄罗斯方块游戏
点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 导读:本文我们要制作一个俄罗斯方块游戏. 作者 | 派森 ...
- PyQt4 进度条和日历 代码
# -*- coding: utf-8 -*- """ -------------------------------------------------File Nam ...
- pyqt5教程9:Widgets组件
PyQt5 widgets 小部件是应用程序的基本构建块. PyQt5 有各种各样的小部件,包括按钮.复选框.滑块或列表框.在本教程的这一部分,我们将描述几个有用的小部件:QCheckBox.切换模式 ...
最新文章
- 【C#】第3章学习要点(三)--常用类和结构的用法
- 二叉搜索树(BFS)总结
- PyTorch基础(五)----- torch.cat()方法
- boost::contract模块实现push button的测试程序
- Luogu P1198 [JSOI2008]最大数 线段树
- 【渝粤教育】广东开放大学 房屋建筑学 形成性考核 (50)
- word中填充效果锁定纵横比_【文艺范】Word文档中的首字下沉效果
- 微信公共账号学习笔记 _ 感想 爪机码字
- java调用mac终端命令_JAVA之前 - mac终端命令行
- html半透明遮罩,div半透明遮罩效果
- 转码解密挖矿 显卡计算能力大对比
- [JavaScript][AJAX] 前后端交互流程,ajax工作流程
- FFmpeg的HEVC解码器源代码简单分析 解析器(Parser)部分
- dof景深matlab,CG制作景深(DOF)的方法
- 第三章 中国To B企业,如何转型?
- git初步使用(登录和创建仓库)
- 洞见云计算的时代野望,第八届全球云计算大会·中国站即将启幕
- 如何安装SPSS软件
- driver,bus,device
- 在laravel中集成swoole,使用hhxsv5/laravel-s扩展
热门文章
- Photos(PHAsset)
- 省视自己,缺点希望改变
- 植物大战僵尸2付费分析
- 面试官:你期望薪资是多少?这样回答让你多拿3000
- css中outline的使用
- linux系统镜像怎么克隆好友,使用SystemImager克隆Linux系统
- 微服务设计指导-通过一个生产事故的具体例子来看微服务
- 明明已经安装了第三方库,但是Pycharm中却提示库不存在的解决办法
- windows消费者预览版的出用感受
- ubuntu14.04 有一些软件包无法被安装。如果您用的是 unstable 发行版,这也许是 因为系统无法达到您要求的状态造成的。该版本中可能会有一些您需要的软件 包尚未被创建或是它们已被从新到(