QT定时器之QTimer类加QTime类制作秒表

article/2025/10/25 21:52:31

一、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"));}
}

效果:
在这里插入图片描述


http://chatgpt.dhexx.cn/article/MTdvujOK.shtml

相关文章

时间类QTime/QTimer

目录 时间类QTime/QTimer 20210119 实例&#xff1a;电子时钟 代码及详细解释如下&#xff1a; 【digiclock.cpp】 【digiclock.h】 【main.cpp】 备注Configure Project 时间类QTime/QTimer 20210119 QTime的currentTime(); //获取当前的系统时间 QTime的…

QT学习:QTime类

QTime的currentTime()&#xff1a;用于获取当前的系统时间; QTime 的toString()&#xff1a;用于将获取的当前时间转换为字符串类型。 为了便于显示&#xff0c;toString()函数的参数需指定转换后时间的显示格式。 显示格式有如下几种&#xff1a; (1)H/h: 小时(若使用H表示小时…

【Qt开发】QTime类

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

Qt扫盲-QTime理论总结

QTime理论总结 一、概述二、使用1. 属性获取2. 时间加减3. 字符串与QTime互转 一、概述 QTime对象包含一个时钟时间&#xff0c;可以用小时数、分钟数、秒数和毫秒数来表示。它提供了比较时间和通过添加毫秒数来操作时间的函数。 QTime使用24小时时钟格式&#xff1b;它没有A…

0004:Qt常用类 - QTime

Qt常用类 - QTime 1 开发环境 在介绍内容之前&#xff0c;先说明一下开发环境&#xff0c;如下图&#xff1a; Qt版本&#xff1a;Qt5.3.2&#xff1b; Qt开发工具&#xff1a;Qt Creater 3.2.1&#xff1b; Qt构建工具&#xff1a;Desktop Qt 5.3 MinGW 32bit&#xff1b; …

QTime

一、描述 QTime 对象包含一个时钟时间&#xff0c;它可以表示为自午夜以来的小时数、分钟数、秒数、毫秒数。 它提供了比较时间和通过添加毫秒数来操纵时间的功能。 QTime 对象应该通过值而不是通过引用 const 来传递。 二、成员函数 1、QString toString(const QString &…

双边滤波+ 通俗自己理解

之前转了一篇文章&#xff1a;http://blog.csdn.net/chenlufei_i/article/details/78892758 详细的讲解了一下双边滤波的原理以及公式&#xff0c;这里主要总结一下自己的通俗理解&#xff0c;所谓双边滤波&#xff0c;就是在均值或者说普通加权滤波&#xff08;如高斯滤波&am…

双边滤波原理与参数的理解+双边滤波matlab实现

基本思路 高斯滤波是一种常用而且简单的降噪算法。但其缺点也很明显&#xff0c;就是会不加区分地将噪声与图像边缘等细节一起平滑处理。 而双边滤波是基于高斯滤波进行改进的方法。在高斯滤波的基础上&#xff0c;双边滤波引入了像素值相似性的权值&#xff0c;使得滤波的结…

双边滤波(Bilateral filter)原理介绍及matlab程序实现

双边滤波 1、原理介绍 双边滤波由C. Tomasi在1998年提出&#xff0c;是一种经典的非线性空间滤波方法。在滤波器稀疏的制定上&#xff0c;双边滤波同时考虑到了输出像素与邻域内其它像素的欧氏距离和取值的差异&#xff0c;即&#xff1a;同时考虑到了空间域和值域间的差别。…

双边滤波器的原理及实现

双边滤波器是什么? 双边滤波(Bilateral filter)是一种可以保边去噪的滤波器。之所以可以达到此去噪效果,是因为滤波器是由两个函数构成。一个函数是由几何空间距离决定滤波器系数。另一个由像素差值决定滤波器系数。可以与其相比较的两个filter:高斯低通滤波器(http://en…

双边滤波原理浅析

前言 双边滤波&#xff08;Bilateral filtering&#xff09;是一种结合了图像像素空间位置关系和像素值大小的非线性组合的保边滤波算法&#xff0c;无需迭代计算&#xff0c;操作简单。从原理上讲&#xff0c;图像领域的滤波通常意义是希望去除噪声&#xff0c;使图像更加平滑…

双边滤波(Bilateral Filter)详解

原理分析: 双边滤波与高斯滤波器相比,对于图像的边缘信息能过更好的保存。其原理为一个与空间距离相关的高斯函数与一个灰度距离相关的高斯函数相乘。 空间距离:指的是当前点与中心点的欧式距离。空间域高斯函数其数学形式为: 其中(xi,yi)为当前点位置,(xc,yc)为中心点…

双边滤波和双边网格

双边滤波 双边滤波器也是一种保边滤波器&#xff0e;和导向图滤波器一样&#xff0c;可以达到在平坦区域进行均值&#xff08;高斯&#xff09;滤波的效果&#xff0c;在边缘不进行滤波的效果&#xff0e;其原理为一个与空间距离相关的高斯函数与一个灰度距离相关的高斯函数相…

bilateral filter双边滤波器的通俗理解

bilateral filter双边滤波器的通俗理解 图像去噪的方法很多&#xff0c;如中值滤波&#xff0c;高斯滤波&#xff0c;维纳滤波等等。但这些降噪方法容易模糊图片的边缘细节&#xff0c;对于高频细节的保护效果并不明显。相比较而言&#xff0c;bilateral filter双边滤波器可以很…

Bilateral Filtering(双边滤波) for SSAO

1. 简介 图像平滑是一个重要的操作&#xff0c;而且有多种成熟的算法。这里主要简单介绍一下Bilateral方法&#xff08;双边滤波&#xff09;&#xff0c;这主要是由于前段时间做了SSAO&#xff0c;需要用bilateral blur 算法进行降噪。Bilateral blur相对于传统的高斯blur来说…

双边滤波与高斯滤波

高斯滤波原理 在数字图像中的高斯噪声主要来源出现在采集期间。由于不良照明或高温引起的传感器噪声。如果一个噪声&#xff0c;它的幅度分布服从高斯分布&#xff0c;而它的功率谱密度又是均匀分布的&#xff0c;则称它为高斯白噪声。高斯滤波器是一种线性滤波器&#xff0c;…

双边滤波(bilateral filter)以及联合双边滤波(joint bilateral filter)

文章目录 双边滤波理论公式代码&#xff08;C&#xff09;数学辅助理解 联合双边滤波&#xff08;joint bilateral filter&#xff09;参考链接 写在最后 双边滤波 自用备忘&#xff0c;若侵则删。 理论公式 利用二维高斯函数生成空间域核&#xff0c;一维高斯函数生成颜色域…

双边滤波(Bilateral filter)

双边滤波器&#xff08;Bilateral filter&#xff09;是一种可以保边去噪的滤波器。可以滤除图像数据中的噪声&#xff0c;且还会保留住图像的边缘、纹理等&#xff08;因噪声是高频信号&#xff0c;边缘、纹理也是高频信息&#xff0c;高斯滤波会在滤除噪声的同时使得边缘模糊…

双边滤波器cv2.bilateralFilter

双边滤波器cv2.bilateralFilter 双边滤波是综合考虑空间信息和色彩信息的滤波方式&#xff0c;在滤波过程中能够有效地保护图像内的边缘信息&#xff0c;双边滤波在计算某一个像素点的新值时&#xff0c;不仅考虑距离信息&#xff08;距离越远&#xff0c;权重越小&#xff09…

opencv-双边滤波

一、双边滤波原理 双边滤波&#xff08;Bilateral Filter&#xff09;是非线性滤波中的一种。这是一种结合图像的空间邻近度与像素值相似度的处理办法。在滤波时&#xff0c;该滤波方法同时考虑空间临近信息与颜色相似信息&#xff0c;在滤除噪声、平滑图像的同时&#xff0c;…