一、QTime时间类

QTime类提供时钟时间函数。
QTime对象包含一个时钟时间,即从午夜开始的小时、分钟、秒和毫秒数。它可以从系统时钟中读取当前时间,并测量运行时间的跨度。它提供了比较时间和通过添加若干毫秒来操作时间的函数。QTime使用24小时时钟格式;它没有上午/下午的概念

1. 头文件

#include <QTime>

2. QTime QTime::addMSecs(int ms) const
返回一个QTime对象,该对象的时间比该对象的时间晚ms毫秒(如果ms为负,则早ms)。
请注意,如果时间超过午夜,时间就会结束

3. QTime QTime::addSecs(int nsecs) const
返回一个QTime对象,该对象的时间比该对象的时间晚s秒(如果s为负数则早s秒)。
请注意,如果时间超过午夜,时间就会结束

4. 获取对象部分时间
int QTime::hour() const 返回时间对象的⼩时,取值范围(0–23)
int QTime::minute() const 返回时间对象的分钟,取值范围(0–59)
int QTime::second() const 返回时间对象的秒,取值范围(0–59)
int QTime::msec() const 返回时间对象的毫秒,取值范围(0–999)

5. bool QTime::isNull() const
如果时间对象等于00:00:00.000,则返回true;否则返回false

6. void QTime::start()
设置当前时间对象的值为当前系统时间

7. int QTime::restart()
将系统时间设置为当前时间,并返回自上次调用start()或restart()以来已经过的毫秒数。
如果计数器超出24⼩时,则设置当前时间为0

8. bool QTime::setHMS(int h, int m, int s, int ms = 0)
设置当前时间对象的时,分,秒和毫秒.如果给定的参数值有效,则返回true,否则返回false

9. QString QTime::toString(const QString &format) const
按照参数format指定的格式⽤字符串形式输出当前时间对象的时间

10. QTime QTime::currentTime()
返回一个值为当前的系统时间的对象

二、QTimer类

QTimer类提供了重复的单次定时器。要使用它,创建一个QTimer,将其超时()信号连接到适当的插槽,并调用start()。从那时起,它将以固定的间隔发出timeout() 信号

1. 头文件

#include <QTimer>

2. void QTimer::start()
(1)void QTimer::start()
启动或者重新启动定时器,其时间间隔是interval,可通过setInterval(int msec)函数进行设置

(2)void QTimer::start(int msec)
启动或者重新启动定时器,时间间隔单位是毫秒

3. void QTimer::stop()
结束一个定时器

4. void QTimer::singleShot(int msec, const QObject * receiver, const char * member)
这是个静态函数,能够在给定的时间间隔后调用槽,并不是多次触发该槽函数,该槽函数只执行一次。使用此函数非常方便,也不必创建本地QTimer对象

5. bool QTimer::isActive() const
如果定时器正在运行,返回true,否则返回false

6. void QTimer::changeInterval(int msec)
改变定时器时间间隔为msec毫秒。如果这个定时器信号是运行的,它将会被停止并且重新开始,否则它将会被开始

三、制作秒表

1. Widget类中设置timeout信号关联槽函数,初始化时间

connect(&timer, SIGNAL(timeout()), this, SLOT(timeout_slot()));
time.setHMS(0, 0, 0, 0); //设置时间为00:00:00:000
ui->timerShow->setText("00:00:000"); //显示到ui界面

2. 打开定时器(打开秒表)

void Widget::on_startBt_clicked()
{timer.start(1); //定时1毫秒
}

3. 读秒显示

void Widget::timeout_slot()
{time = time.addMSecs(1); //时间加1毫秒ui->timerShow->setText(time.toString("hh:mm:ss:zzz")); //显示到ui界面
}

4. 重置功能实现

void Widget::on_resetBt_clicked()
{timer.stop(); //关闭定时器time.setHMS(0, 0, 0, 0); //设置时间为00:00:00:000ui->timerShow->setText("00:00:000"); //显示到ui界面ui->bitEdit->setPlainText(""); //清空打点记录
}

5. 关闭定时器

void Widget::on_stopBt_clicked()
{timer.stop();
}

源码:
widget.h

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include <QTimer>
#include <QTime>namespace Ui {class Widget;
}class Widget : public QWidget
{Q_OBJECTpublic:explicit Widget(QWidget *parent = 0);~Widget();QTimer timer;QTime time;private slots:void on_startBt_clicked();void timeout_slot();void on_stopBt_clicked();void on_resetBt_clicked();void on_bitBt_clicked();private:Ui::Widget *ui;
};#endif // WIDGET_H

widget.cpp

#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget)
{ui->setupUi(this);connect(&timer, SIGNAL(timeout()), this, SLOT(timeout_slot()));time.setHMS(0, 0, 0, 0); //设置时间为00:00:00:000ui->timerShow->setText("00:00:000"); //显示到ui界面
}Widget::~Widget()
{delete ui;
}void Widget::on_startBt_clicked()
{timer.start(1); //定时1毫秒
}void Widget::timeout_slot()
{time = time.addMSecs(1); //时间加1毫秒ui->timerShow->setText(time.toString("hh:mm:ss:zzz")); //显示到ui界面
}void Widget::on_stopBt_clicked()
{timer.stop(); //关闭计时器
}void Widget::on_resetBt_clicked()
{timer.stop(); //关闭计时器time.setHMS(0, 0, 0, 0); //设置时间为0ui->timerShow->setText("00:00:000"); //显示到ui界面ui->bitEdit->setPlainText(""); //清空打点记录
}void Widget::on_bitBt_clicked()
{if (timer.isActive()) //如果定时器在运行返回true{ui->bitEdit->appendPlainText(time.toString("hh:mm:ss:zzz"));}
}

效果:

QT定时器之QTimer类加QTime类制作秒表相关推荐

  1. 计算机sci有哪些AJCHE,最新SCI目录(大类加小类,齐全).xls

    小类分区阈值(172个类) 小类分区 大类分区阈值(13个类) 大类分区 大类+小类分区 jcr07sf jcr08newf jcrclabigfinal jcrclasmalfinal jcrcla ...

  2. FFmpeg开发(七)——Qt视频播放器之播放列表类(参考了暴风影音、迅雷影音)

    FFmpeg开发(七)--Qt视频播放器之播放列表类(参考了暴风影音.迅雷影音) 上一篇分享了音频类的封装. FFmpeg开发(六)--Qt视频播放器之封装音频类(参考了暴风影音.迅雷影音) 本播放器 ...

  3. 学习QT之QTime类

    QTime类的currentTime()函数用于获取当前的系统时间:QTime的toString()函数用于将获取的时间转换为字符串类型.为了方便显示,toString()函数的参数需指定转换后时间的 ...

  4. FFmpeg开发(五)——Qt视频播放器之封装FFmpeg类(参考了暴风影音、迅雷影音)

    FFmpeg开发(五)--Qt视频播放器之封装FFmpeg类(参考了暴风影音.迅雷影音) 上一篇介绍了,使用Qt和FFmpeg写的播放器.页面大家可以点进去查看和下载. FFmpeg开发(四)--Qt ...

  5. FFmpeg开发(六)——Qt视频播放器之封装音频类(参考了暴风影音、迅雷影音)

    FFmpeg开发(六)--Qt视频播放器之封装音频类(参考了暴风影音.迅雷影音) 上一篇介绍了,封装FFmpeg类. Qt视频播放器之封装FFmpeg类(参考了暴风影音.迅雷影音) 之前的链接大家可以 ...

  6. 【Qt开发】QTime类

    QTime类为用户提供一系列时间的函数,封装的很全面,几乎满足了各种时间的需求. 常用方法介绍 1.QTime addMSecs(int ms) const 当前时间增加毫秒,ms可为负 2.QTim ...

  7. Tomcat 7 自动加载类及检测文件变动原理

    在一般的 web 应用开发里通常会使用开发工具(如 Eclipse.IntelJ )集成 tomcat ,这样可以将 web 工程项目直接发布到 tomcat 中,然后一键启动.经常遇到的一种情况是直 ...

  8. Qt QML模块提供的重要C ++类

    Qt QML模块提供的重要C ++类 Qt QML模块提供的重要C ++类 QML运行时 QQmlEngine类 QQmlContext类 动态对象实例化和表达评估 QQmlComponent类 QQ ...

  9. QT飞机大战五(碰撞爆炸特效类)

    如图所示,在子弹碰到敌机时,同时产生爆炸特效,显得不那么突兀 那么怎么做到的呢?? 其实也很简单,爆炸特效由一些图片组成,每当我们检测到子弹和敌机相交时 就在这个位置播放一个爆炸特效,那么爆炸也可以封 ...

最新文章

  1. MySQL中只会count(),sum()?累加运算没听过?
  2. list循环添加数据_List 去除重复数据的 5 种正确姿势!你知道几种?
  3. SAP UI5 国际化的rtl support
  4. GWT的渐进式Web应用程序配方
  5. linux7配置网卡绑定,CentOS7双网卡绑定配置
  6. java学习-BeanUtils给对象的属性赋值
  7. linux查找、搜索字符或文件
  8. php 学习笔记之日期时间操作一箩筐
  9. 数据结构严蔚敏 #二叉树 代码复现
  10. 《电力电子技术》王兆安 第二章
  11. Qt画面切换和刷新延迟的问题
  12. 语音识别竞品分析报告
  13. 分享一个基于labview的2048小游戏(附详细教程+代码)
  14. ajax日期格式,ajax读取的日期的格式转换
  15. 开关电源输出纹波主要来源五个方面?示波器测纹波方法?
  16. 中国保险业过去五年基础数据分析
  17. 正态分布以及推测统计简述
  18. 改xml文件默认打开方式
  19. ABAP CS02物料BOM相关性分配实现
  20. 深信服上网行为管理(AC)部署三两事

热门文章

  1. 2022年5月中国数据库排行榜:墨天轮榜单榜首易位,前九三商三云三开源
  2. 华为 FunsionInsight HD 平台的 配置 source-taildir sink-hdfs
  3. VUE设置和清除定时器
  4. python的requests使用
  5. 动态获取并设置 iframe 自适应高度
  6. 文件系统类型(ext4、xfs、fat32、vfat、ntfs、....)
  7. 当电脑卡在主板界面时开不开机的解决方法。
  8. firewalld 防火墙设置
  9. Qt-FFmpeg开发-视频播放(4)
  10. 嵌入式优势到底在哪里?