Qt QTimer类
Header:
#include
CMake:
find_package(Qt6 COMPONENTS Core REQUIRED)
target_link_libraries(mytarget PRIVATE Qt6::Core) qmake: QT += core Inherits: QObject
qmake:
QT+=core
继承自:QObject
公有函数(Public Functions)
QTimer(QObject *parent = nullptr);
QTimer类的构造函数。
virtual ~QTmer();
QTimer类的析构函数。
QMetaObject::Connection callOnTimeout(Functor slot, Qt::ConnectionType connectionType = Qt::AutoConnection)
这个函数是创建从 timeout() 信号到槽的 connectionType 类型的连接,并返回连接的句柄。提供此方法是为了方便, 它相当于调用 QObject::connect(timer, &QTimer::timeout, timer, slot, connectionType)。
QMetaObject::Connection callOnTimeout(const QObject *context, Functor slot, Qt::ConnectionType connectionType = Qt::AutoConnection)
它相当于调用QObject::connect(timer, &QTimer::timeout, context, slot, connectionType).
QMetaObject::Connection callOnTimeout(const QObject *receiver, MemberFunction *slot, Qt::ConnectionType connectionType = Qt::AutoConnection)
它相当于调用QObject::connect(timer, &QTimer::timeout, receiver, slot, connectionType).
int interval() const
获取定时器触发间隔时间。
std::chrono::milliseconds intervalAsDuration() const
获取定时器触发间隔时间,类型为std::chrono::milliseconds。
bool isActive() const
定时器在运行返回真,否则返回假。
bool isSingleShot() const
定时器是否为单次触发。
int remainingTime() const
获取定时器的剩余时间。
std::chrono::milliseconds remainingTimeAsDuration() const
获取定时器的剩余时间,类型为std::chrono::milliseconds。
void setInterval(int msec)
设置定时器的间隔时间,单位为毫秒。
void setInterval(std::chrono::milliseconds value)
设置定时器的间隔时间,类型为std::chrono::milliseconds。
void setSingleShot(bool singleShot)
设置定时器是否为单次触发。
void setTimerType(Qt::TimerType atype)
设置定时器的精度。
void start(std::chrono::milliseconds msec)
开启定时器。
int timerId() const
获取定时器的ID。
Qt::TimerType timerType() const
获取定时器的精度。
性质(Properties)
active:bool
read-only
如果定时器运行,这个布尔型性质返回真,否则返回假。
interval:int
此属性是定时器的触发间隔时间,单位为毫秒。
这里默认设置为0,一旦窗口系统事件队列中的所有事件都已经被处理完,一个时间间隔为0的QTimer就会触发。
remainingTime:int
read-only
此属性保存剩余时间,单位为毫秒。
返回计时器的剩余值,单位为毫秒,直到超时。如果计时器不活动,返回的值将为-1。如果计时器过期,返回的值将为0。
singleShot : bool
此属性是计时器的单次触发属性,若为单次触发,值为真,否则为假。
timerType : Qt::TimerType
此属性是定时器的触发精度,默认值为Qt::CoarseTimer,详见Qt::TimerType。
公有槽(Public Slots)
void start()
开启定时器。
void start(int msec)
开启定时器并设置时间间隔。
void stop()
关闭定时器
信号(Signals)
void timeout()
定时器触发信号。
QTimer *timer = new QTimer(this);
connect(timer, &QTimer::timeout, this, QOverload<>::of(&AnalogClock::update));
timer->start(1000);
// 此处的QOverload<>::of用于区分update的重载函数
静态公有函数(Static Public Members)
void singleShot(int msec, const QObject *receiver, const char *member)
单次触发函数。
void singleShot(int msec, Qt::TimerType timerType, const QObject *receiver, const char *member)
void singleShot(int msec, const QObject *receiver, PointerToMemberFunction method)
void singleShot(int msec, Qt::TimerType timerType, const QObject *receiver, PointerToMemberFunction method)
void singleShot(int msec, Functor functor)
void singleShot(int msec, Qt::TimerType timerType, Functor functor)
void singleShot(int msec, const QObject *context, Functor functor)
void singleShot(int msec, Qt::TimerType timerType, const QObject *context, Functor functor)
void singleShot(std::chrono::milliseconds msec, const QObject *receiver, const char *member)
void singleShot(std::chrono::milliseconds msec, Qt::TimerType timerType, const QObject *receiver, const char *member)
重载保护函数(Reimplemented Protected Functions)
virtual void timerEvent(QTimerEvent *e) override
重载定时器事件。使用此重写后,
枚举Qt::TimerType
Constant | Value | Description |
---|---|---|
Qt::PreciseTimer | 0 | 精准定时器 |
Qt::CoarseTimer | 1 | 普通定时器 |
Qt::VeryCoarseTimer | 2 | 粗糙定时器 |
例:
1. 循环触发某一个任务:在应用内显示当前时间。
QTimer *mpTimer = new QTimer(this);
mpTimer->callOnTimeout(this,QOverload<>::of(&MainWindow::updateTime));
mpTimer->start(1000);//间隔触发时间为1秒。private slots:
void Example::updateTime()
{qDebug()<<"当前时间为"<<QDateTime::currentDateTime();
}
2. 实现一个延时函数
void delayMs(int ms) //毫秒级的延时
{QEventLoop loop;//定义一个新的事件循环QTimer::singleShot(Ms, &loop, SLOT(quit()));//创建单次定时器,槽函数为事件循环的退出函数loop.exec();//事件循环开始执行,程序会卡在这里,直到定时时间到,本循环被退出
}
Qt QTimer类相关推荐
- QT的QTimer类的使用
详细说明 QTimer类提供重复和单次计时器. QTimer类为计时器提供了高级编程接口.要使用它,请创建一个QTimer,将其timeout()信号连接到适当的插槽,然后调用start().从那时起 ...
- [转]QT QDateTime类、QTimer类
QDateTime类,头文件#include <QDateTime> 可以使用QDateTime类来获得系统时间.通过QDateTime::currentDateTime()来获取本地系统 ...
- QT定时器之QTimer类加QTime类制作秒表
一.QTime时间类 QTime类提供时钟时间函数. QTime对象包含一个时钟时间,即从午夜开始的小时.分钟.秒和毫秒数.它可以从系统时钟中读取当前时间,并测量运行时间的跨度.它提供了比较时间和通过 ...
- 详解 QT 主要类 QWidget
QWidget类是所有用户界面对象的基类,每一个窗口部件都是矩形,并且它们按Z轴顺序排列的.一个窗口部件可以被它的父窗口部件或者它前面的窗口部件盖住一部分. 先来看内容. AD: 2013云计算架构师 ...
- Qt4_在次线程中使用Qt的类
在次线程中使用Qt的类 当函数可以同时被不同的线程安全地调用时,就称其为"线程安全的"(thread-safe).如果在不同的线程中对某一共享数据同时调用两个线程安全的函数,那么结 ...
- Qt QTimer使用
QTimer作为Qt中方便快捷的定时器,在日常使用中经常用到,但是我有时会犯一些毛病,比如一位自己已经很了解一个类,就不会去特地观看这个类的官方文档,很多时候想用一些高级特性,会摸不着头脑,比如这次, ...
- Qt学习之路(1)------Qt常用类用法说明
Qt常用类 向控制台输出文本 第一个例子,我们采用STL的方式: console.cpp #include <iostream>int main() {std::cout << ...
- Qt 串口类QSerialPort 使用笔记
Qt 串口类QSerialPort 使用笔记 虽然现在大多数的家用PC机上已经不提供RS232接口了.但是由于RS232串口操作简单.通讯可靠,在工业领域中仍然有大量的应用.Qt以前的版本中,没有提供 ...
- QT QVariant类数据类型使用
QT QVariant类数据类型使用 1. QVariant 类用于封装数据成员的类型及取值等信息,该类类似于 C++ 共用体 union ,一个QVariant 对象,一次只能保存一个单一类型的值. ...
最新文章
- 听说H2O能让大家都会用机器学习?
- Python对字符串进行左右中对齐
- [ASP.NET] 限制上传文件类型的两种方法(转)
- boost::callable_traits添加可变参数的测试程序
- 1083 矩阵取数问题
- 抖音上非常火的旋转图快速部署
- Linux篇 | 用户、组和权限(一)
- TrackBar问题,有高人能解决吗?
- 服务器操作系统修复补丁,最后的更新!微软Windows 7发布KB4534310修复补丁
- SPSS实现多元方差分析
- 曾经,我们有一个芝麻大小的梦想
- ERROR:connect ETIMEDOUT
- 笔记--利用python下载bilibili视频
- 云音乐vue开发日记
- sqlserver 电话号3-8位用*号代替
- linux内核启动过程和启动第一个应用程序
- 达威尔GK5巧克力办公静音键盘,七色背光RGB游戏家用有线键盘上线啦!
- Linux:ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cann
- docker框架及模块介绍
- 世界顶尖青年发明家:13华人上榜[其中5人毕业于中科大]
热门文章
- 处理Activity#onResume()遇到java.lang.IllegalArgumentException诡异异常
- POP3/SMTP/IMAP 服务讲解
- android edittext 光标 尾,android如何将EditText光标设置为其文本的末尾[复制]
- 时尚促销好物推广产品宣传PR广告模板MOGRT
- Mac编译Aria2突破线程限制兼顾开机启动
- AI安全---对抗攻击防御措施
- LTE(4G) 跟踪区更新流程TAU
- 10-wtm数据权限
- Deferoxamine-PEG-PEI;去铁胺-聚乙二醇-聚乙烯亚胺;Deferoxamine-PEG-聚乙烯亚胺
- 【VTK】VTK框选表面拾取三角面片——通过观察者命令模式