QT定时器之QTimer类加QTime类制作秒表
一、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类制作秒表相关推荐
- 计算机sci有哪些AJCHE,最新SCI目录(大类加小类,齐全).xls
小类分区阈值(172个类) 小类分区 大类分区阈值(13个类) 大类分区 大类+小类分区 jcr07sf jcr08newf jcrclabigfinal jcrclasmalfinal jcrcla ...
- FFmpeg开发(七)——Qt视频播放器之播放列表类(参考了暴风影音、迅雷影音)
FFmpeg开发(七)--Qt视频播放器之播放列表类(参考了暴风影音.迅雷影音) 上一篇分享了音频类的封装. FFmpeg开发(六)--Qt视频播放器之封装音频类(参考了暴风影音.迅雷影音) 本播放器 ...
- 学习QT之QTime类
QTime类的currentTime()函数用于获取当前的系统时间:QTime的toString()函数用于将获取的时间转换为字符串类型.为了方便显示,toString()函数的参数需指定转换后时间的 ...
- FFmpeg开发(五)——Qt视频播放器之封装FFmpeg类(参考了暴风影音、迅雷影音)
FFmpeg开发(五)--Qt视频播放器之封装FFmpeg类(参考了暴风影音.迅雷影音) 上一篇介绍了,使用Qt和FFmpeg写的播放器.页面大家可以点进去查看和下载. FFmpeg开发(四)--Qt ...
- FFmpeg开发(六)——Qt视频播放器之封装音频类(参考了暴风影音、迅雷影音)
FFmpeg开发(六)--Qt视频播放器之封装音频类(参考了暴风影音.迅雷影音) 上一篇介绍了,封装FFmpeg类. Qt视频播放器之封装FFmpeg类(参考了暴风影音.迅雷影音) 之前的链接大家可以 ...
- 【Qt开发】QTime类
QTime类为用户提供一系列时间的函数,封装的很全面,几乎满足了各种时间的需求. 常用方法介绍 1.QTime addMSecs(int ms) const 当前时间增加毫秒,ms可为负 2.QTim ...
- Tomcat 7 自动加载类及检测文件变动原理
在一般的 web 应用开发里通常会使用开发工具(如 Eclipse.IntelJ )集成 tomcat ,这样可以将 web 工程项目直接发布到 tomcat 中,然后一键启动.经常遇到的一种情况是直 ...
- Qt QML模块提供的重要C ++类
Qt QML模块提供的重要C ++类 Qt QML模块提供的重要C ++类 QML运行时 QQmlEngine类 QQmlContext类 动态对象实例化和表达评估 QQmlComponent类 QQ ...
- QT飞机大战五(碰撞爆炸特效类)
如图所示,在子弹碰到敌机时,同时产生爆炸特效,显得不那么突兀 那么怎么做到的呢?? 其实也很简单,爆炸特效由一些图片组成,每当我们检测到子弹和敌机相交时 就在这个位置播放一个爆炸特效,那么爆炸也可以封 ...
最新文章
- MySQL中只会count(),sum()?累加运算没听过?
- list循环添加数据_List 去除重复数据的 5 种正确姿势!你知道几种?
- SAP UI5 国际化的rtl support
- GWT的渐进式Web应用程序配方
- linux7配置网卡绑定,CentOS7双网卡绑定配置
- java学习-BeanUtils给对象的属性赋值
- linux查找、搜索字符或文件
- php 学习笔记之日期时间操作一箩筐
- 数据结构严蔚敏 #二叉树 代码复现
- 《电力电子技术》王兆安 第二章
- Qt画面切换和刷新延迟的问题
- 语音识别竞品分析报告
- 分享一个基于labview的2048小游戏(附详细教程+代码)
- ajax日期格式,ajax读取的日期的格式转换
- 开关电源输出纹波主要来源五个方面?示波器测纹波方法?
- 中国保险业过去五年基础数据分析
- 正态分布以及推测统计简述
- 改xml文件默认打开方式
- ABAP CS02物料BOM相关性分配实现
- 深信服上网行为管理(AC)部署三两事