1、说明

QTimer类代表计时器,为了正确使用计时器,可以构造一个QTimer,将它的timeout()信号connect到合适的槽,之后调用start()。然后,这个QTimer就会每隔interval就发送一个timeout()信号。

一个间隔为1s(1000ms)的计时器

QTimer * timer = new QTimer(this);
connect(timer , &QTimer::timeout , this , QOverload<>::of(&AnalogClock::update));
timer->start(1000);

本例中,在start()计时器之后,update()槽函数将被每秒调用一次。

如果想要只超时一次,可以调用方法setSingleShot( true )。我们可以通过调用静态方法QTimer::singleShot()来在指定interval之后调用某个槽函数:

QTimer::singleShot(200,this,&Foo::updateCaption);

在多线程应用中,我们可以在每个使用事件循环(event looop)的线程中使用QTimer。使用QThread::exec()方法,可以从非GUI线程中start event loop。Qt使用计时器的 thread affinity(线程事务)去决定发送哪个timeout()信号。因此,只需要在一个线程中start或stop计时器就可以了。

2、模块和加载项

Header #include<QTimer>
qmake QT += core
Inherits QObject

3、属性

类型

属性

说明

getter与setter

信号

bool active 当计时器运行时,这个属性是true,否则是false  isActive()  
int interval 计时器间隔(毫秒)

interval()

setInterval(int msec)

setInterval(std::chrono::milliseconds value)

 
int remainingTime 到计时器停止的剩余时间(毫秒) remainingTime()  
bool singleShot 该计时器是否是单响计时器

isSingleShot()

setSingleShot(bool singleShot)

 
TimerType timerType 控制计时器的精度

timerType()

setTimerType(Qt::TimerType atype)

 

4、构造

QTimer(QObject *parent = nullptr)

在给定的parent上构造计时器

5、成员方法

返回值类型

方法

说明

QMetaObject::Connection callOnTimeout(Functor slot, Qt::ConnectionType connectionType = Qt::AutoConnection)  建立信号与槽之间的连接,等价于调用QObject::connect(timer , timeout() , receiver , slot , connectionType)
 callOnTimeout(const QObject *context, Functor slot, Qt::ConnectionType connectionType = Qt::AutoConnection)
callOnTimeout(const QObject *receiver, MemberFunction *slot, Qt::ConnectionType connectionType = Qt::AutoConnection 
 int interval()   

std::chrono::milliseconds

intervalAsDuration()   返回interval对应的std::chrono::milliseconds对象
 bool isActive()  当计时器运行时返回true,否则false
 bool remainingTime()   
std::chrono::milliseconds  remainingTimeAsDuration()   返回remaining time对应的std::chrono::milliseconds对象
 void     setInterval(int msec)  
setInterval(std::chrono::milliseconds value  
 setSingleShot(bool singleShot)  
setTimerType(Qt::TimerType atype  
 void start(int msec 重启一个interval为msec的计时器
 int timerId()  返回计时器的ID
 Qt::TimerType timerType()   

5.5、静态方法

void singleShot( ... )  设置一个单响计时器

6、槽

槽函数

说明

start() 启动计时器(如果已经启动则重启)
start(int msec) 重启一个间隔为msec的计时器 
stop() 停止计时器 

7、信号

timeout() 超时是发送该消息

Qt:QTimer的更多相关文章

  1. QT:窗口最小化时显示一个小浮标

    有些窗口在自身最小化时要在桌面上显示一个小浮标,让用户利用这个小浮标进行各种操作(例如迅雷的悬浮窗一样),我试着用QT实现一下这个功能. PS:本来以为这个功能很简单,却搞了我两个晚上,泪奔... 思 ...

  2. Qt之QTimer

    简述 QTimer类提供了重复和单次触发信号的定时器. QTimer类为定时器提供了一个高级别的编程接口.很容易使用:首先,创建一个QTimer,连接timeout()信号到适当的槽函数,并调用sta ...

  3. Qt:禁止qDebug的输出

    Qt:禁止qDebug的输出 在工程的.pro文件里加上以下编译批令即可: DEFINES += QT_NO_DEBUG_OUTPUT

  4. Qt:使用自定义的字体

    Qt:使用自定义的字体 1. 下载字体文件 2. 加载字体文件 3. 使用字体   QFontDatabase::addApplicationFont("XENOTRON.TTF" ...

  5. Qt:QJsonObject

    0.说明 QJsonObject在逻辑上就是一个Map或Dict!记住这一点对理解它的方法.说明很有帮助. QJsonObject类封装了JSON Object. JSON Object是一个Key- ...

  6. Qt:QJsonValue

    0.说明 QJsonValue类用于操作JSON中的各种数据. JSON是用于存储结构化数据的格式,JSON中的数据可以是六种类型: 基本类型 存储类型 bool QJsonValue::Bool d ...

  7. Qt:QJsonArray

    0.说明 QJsonArray中存储了一系列的QJsonValue.可以向其中插入.删除QJsonValue. 一个QJsonArray可以与QVariantList互相转换.可以通过size()访问 ...

  8. Qt:QUrl构造时的qrc前缀

    参考(按对我帮助从大到小排列): Qt内的各种路径(让人迷惑) - 鬼谷子com - 博客园 qt webengineview 加载本地资源方式 - beautifulday - 博客园 (17条消息 ...

  9. QT:“下载速度柱状图”的模拟实现——思路真好,会动脑筋,连我都有了启发(这个思路好像是通用的)

    不知是哪个版本的迅雷,有个“下载速度柱状图”的小界面,我比较喜欢(只不过最新版本的迅雷却没了),所以决定来山寨一个.当然,这个山寨品不能下载文件,呵呵. 思路:1:将界面的背景涂成黑色2:每隔0.1秒 ...

随机推荐

  1. 异常机制(Exception)

    异常机制(Exception) 异常程序是指程序运行中出现的不期而至的各种状况,如文件找不到,网络连接失败,非法参数等. 异常发生在程序运行期间,它影响了正常的程序执行流程 检查性异常 最具代表性的检 ...

  2. db2日志模式、备份归档、恢复解析

    DB2的日志分为两种模式,日志循环与归档日志,也就是非归档和归档模式.下面就具体介绍一下这两种方式以及和备份归档设置的关系. 一.日志循环 这是默认方式,也就是非归档模式,这种模式只支持(backup ...

  3. python05day

    之前代码总行数735+133=868 内容回顾 列表:容器型数据类型,可以承载大量的数据,有序的数据 增: append 追加 insert 插入,按索引增 extend 迭代着追加 删: pop 按 ...

  4. Android Compose的Window Insets

    Android Compose的Window Insets 除了app的内容区域外, 还有一些其他的固定元素会显示在手机屏幕上, 顶部的状态栏, 刘海, 底部的导航栏, 还有输入法键盘, 它们都是系统 ...

  5. C++智能指针使用说明

    导读 STL提供四种智能指针:auto_ptr.unique_ptr.shared_ptr和weak_ptr.其中auto_ptr是C++98提供的解决方案,C++11以后均已摒弃.所有代码在gcc ...

  6. Maven的安装、配置与使用

    5.Maven 我为什么要学习这个技术? 在JavaWeb开发中,需要使用大量的jar包,我们手动去导入: 如何能够让一个东西自动帮我们导入和配置这个jar包. 由此,Maven诞生! 5.1.Mav ...

  7. eslint规则详解

    { // 环境定义了预定义的全局变量. "env": { //环境定义了预定义的全局变量.更多在官网查看 "browser":true, "node& ...

  8. Redis 常见面试题(2020最新版)

    阶段汇总集合:001期~180期汇总,方便阅读(增加设计模式) 概述 什么是Redis Redis(Remote Dictionary Server) 是一个使用 C 语言编写的,开源的(BSD许可) ...

  9. LAMP以及各组件的编译安装

    LAMP以及各组件的编译安装 目录 LAMP以及各组件的编译安装 一.LAMP 1. LAMP概述 2. 各组件的主要作用 3. 平台环境的安装顺序 二.编译安装apache httpd 1. 关闭防 ...

  10. Spring Boot 2.x基础教程:使用tinylog记录日志

    tinylog简介 tinylog,与其他各种tiny开头的东西一样,是一个轻量级的开源日志解决方案.它本身只包含两个JAR文件(一个用于API,另一个用于实现),没有任何外部依赖关系.两个JAR文件 ...