QTime类提供时钟时间函数。
QTime对象包含一个时钟时间,即从午夜开始的小时、分钟、秒和毫秒数。它可以从系统时钟中读取当前时间,并测量运行时间的跨度。它提供了比较时间和通过添加若干毫秒来操作时间的函数。QTime使用24小时时钟格式;它没有上午/下午的概念
1. 头文件
#include
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,将其超时()信号连接到适当的插槽,并调用start()。从那时起,它将以固定的间隔发出timeout() 信号
1. 头文件
#include
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:000
ui->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
#include
#include
namespace Ui {
class Widget;
}
class Widget : public QWidget
{
Q_OBJECT
public:
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:000
ui->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); //设置时间为0
ui->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"));
}
}