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

QT教程:QTime和QTimer的使用场景

QTime类

        QTime 是一个用来表示和操作时间的类,它处理一天中的具体时间(例如小时、分钟、秒、毫秒)。通常用于计算时间间隔、记录时间戳、获取当前时间等。

特点和功能

  •         表示时间:QTime 用来表示一天中的某个具体时间(小时、分钟、秒、毫秒)。
    •         不与事件循环绑定:它不是用来实现定时功能的,而是用来表示和计算时间。
      •         常见用途:记录时间戳、计算时间差、获取当前时间等。

常见用法

获取当前时间

QTime currentTime = QTime::currentTime();  // 返回当前时间

计算时间差

QTime startTime = QTime::currentTime();
// 某个耗时操作...
QTime endTime = QTime::currentTime();
int elapsed = startTime.msecsTo(endTime);  // 返回以毫秒为单位的时间差

示例 

#include <QTime>
#include <QDebug>int main() {// 获取当前时间QTime startTime = QTime::currentTime();qDebug() << "开始时间:" << startTime.toString();// 模拟一些耗时操作QThread::sleep(2);  // 休眠 2 秒QTime endTime = QTime::currentTime();int elapsed = startTime.msecsTo(endTime);  // 计算耗时的毫秒数qDebug() << "结束时间:" << endTime.toString();qDebug() << "耗时:" << elapsed << "毫秒";return 0;
}

QTimer类

        QTimer 是一个用于处理定时操作的类,它可以每隔一段时间触发一次,常用于实现定时器、周期性任务、超时事件等。QTimer 与事件循环相关联,它会定期触发信号 timeout(),你可以将这个信号连接到某个槽函数,以便在时间间隔到达时执行相应的操作。

特点和功能

  •    1.定时功能:QTimer 是一个事件驱动的定时器,适合定期触发任务,比如每隔一段时间执行某个操作。
  •    2.与事件循环结合:QTimer 依赖于 Qt 的事件循环系统,适合在 GUI 应用中使用。
  •    3.周期性执行:可以设置为单次触发或者周期性触发。

常见用法

启动定时器:

QTimer timer;
timer.start(1000);  // 每隔 1000 毫秒(1 秒)触发一次

连接信号与槽: 

 // 建立信号和槽的连接
connect(&timer, SIGNAL(timeout()), this, SLOT(onTimeout()));

停止定时器

timer.stop();

示例

#include <QTimer>
#include <QCoreApplication>
#include <QDebug>class TimerHandler : public QObject {Q_OBJECTpublic:TimerHandler() {// 建立信号和槽的连接connect(&timer, SIGNAL(timeout()), this, SLOT(onTimeout()));// 启动定时器,每 1000 毫秒(1 秒)触发一次 timeout 信号timer.start(1000);}public slots:// 槽函数,用于处理定时器的 timeout 信号void onTimeout() {qDebug() << "定时器触发!";}private:QTimer timer;  // 定时器对象
};int main(int argc, char *argv[]) {QCoreApplication app(argc, argv);// 实例化 TimerHandler 对象TimerHandler timerHandler;// 开始事件循环return app.exec();
}
适用场景
  • 定时任务:你需要在固定的时间间隔(如每秒、每分钟等)执行某个任务时,使用 QTimer
  • 倒计时/超时:可以设置单次触发的定时器来处理超时操作。

QTime 与 QTimer 的区别

特性

QTime

QTimer

用途

表示和操作具体的时间,进行时间计算

定时触发任务,每隔一段时间执行某个操作

是否依赖事件循环

时间操作

获取当前时间、计算时间差等

定期发出信号,每次时间到达时执行操作

常见用法

计算时间间隔、表示时间

定时器、周期性任务、超时处理

触发机制

无触发机制,手动获取时间

通过 timeout() 信号触发,自动处理时间间隔

是否周期性

不适合周期性操作

可以设置为单次或周期性触发

总结

  • QTime:
  •    1.用于表示时间和处理时间计算。它不用于定时操作,而是更适合用于计算两个时间点之间的时间差,或者获取当前时间。
  • QTimer:
  •    2.用于定时操作,可以设置每隔一定时间触发任务。它适合用在需要定期执行某些任务的场景中,如 GUI 应用的动画、定时更新等。

http://www.lryc.cn/news/431320.html

相关文章:

  • MySQL 迁移中 explicit_defaults_for_timestamp 参数影响
  • 树状数组记录
  • 客户端时间和服务器时间的区别
  • 已入职华为!!关于我成功拿下华为大模型算法岗经验总结
  • 从安卓开发到AI产品经理——我的AI绘画之旅
  • 代码随想录八股训练营第三十四天| C++
  • 《深入理解 Java 中的 this 关键字》
  • python文件自动分类(5)
  • 【Unity-Lua】音乐播放器循环滚动播放音乐名
  • 宏碁扩展Swift系列,推出四款全新AI笔记本电脑
  • 科研绘图系列:R语言差异基因四分图(Quad plot)
  • 文字或图案点选坐标点返回
  • 硬盘数据恢复软件TOP4榜单出炉,选对方法竟然如此重要
  • 给自己复盘用的随想录笔记-栈与队列
  • 微信小程序跳转到另一个微信小程序
  • 【知识图谱】4、LLM大模型结合neo4j图数据库实现AI问答的功能
  • 《信息技术 云计算 边缘云通用技术要求》国家标准发布,九州未来参编
  • NTFS硬盘支持工具Paragon NTFS for Mac 15.4.44 中文破解版
  • 66-java 类型擦除
  • 25考研人数预计下降?这一届考研有哪些新趋势?
  • 比尔·盖茨对AI充满信心
  • Selenium 实现图片验证码识别
  • 基于云原生向量数据库 PieCloudVector 的 RAG 实践
  • 内存泄漏的影响
  • shell变量扩展你知道多少?
  • Compose中对于KeyEvent的处理
  • OpenXR Monado compositor处理应用layers(cheduled->delivered)
  • leetcode:1137 Tribonacci 数列
  • 简单讲一下API的作用以及介绍
  • 猎板道出PCB免费打样真相:制造成本究竟给了谁?