Qt计时器

Qt 时钟主要使用QTimer和QTime类

QTimer类
初始化QTimer对象
QTimer *timer = new QTimer;
开始计时
// void start(std::chrono::milliseconds msec)
timer->start(1000);
// 每隔 1000 毫秒发射一个timeout信号
关联timeout信号
connect(timer, &QTimer::timeout, this, &timerDemo::timeout_slot);

timeout_slot中实现增加时间,更新label显示时间

暂停计时
timer->stop();
QTime 类
初始化QTime对象
QTime *time = new QTime;
time->setHMS(0,0,0,0);
增加时间
// 增加毫秒数
*time = time->addMSecs();
格式化输出
time->toString("hh:mm:ss zzz");
完整代码
timerdemo.h
#ifndef TIMERDEMO_H
#define TIMERDEMO_H

#include <QWidget>
#include <QTimer>
#include <QTime>


QT_BEGIN_NAMESPACE
namespace Ui { class timerDemo; }
QT_END_NAMESPACE

class timerDemo : public QWidget
{
    Q_OBJECT

public:
    QTimer *timer;
    QTime * time;

    int count;

public:
    timerDemo(QWidget *parent = nullptr);
    ~timerDemo();

    void timeout_slot();


private slots:
    void on_startBtn_clicked();

    void on_paushBtn_clicked();

    void on_resetBtn_clicked();

    void on_bitBtn_clicked();

private:
    Ui::timerDemo *ui;
};
#endif // TIMERDEMO_H

timerdemo.cpp
#include "timerdemo.h"
#include "ui_timerdemo.h"

timerDemo::timerDemo(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::timerDemo)
    , timer(new QTimer)
    , time(new QTime)
    , count(0)
{
    ui->setupUi(this);

    connect(timer, &QTimer::timeout, this, &timerDemo::timeout_slot);
    time->setHMS(0,0,0);
    ui->timerLabel->setText(time->toString("hh:mm:ss zzz"));
}

timerDemo::~timerDemo()
{
    delete ui;
}

void timerDemo::timeout_slot()
{
    *time = time->addMSecs(30);
    ui->timerLabel->setText(time->toString("hh:mm:ss zzz"));
}


void timerDemo::on_startBtn_clicked()
{
    if (!timer->isActive())
    {
        timer->start(30);

    }
}

void timerDemo::on_paushBtn_clicked()
{
    if (timer->isActive())
    {
        timer->stop();
    }
}

void timerDemo::on_resetBtn_clicked()
{
    if (timer->isActive())
    {
        timer->stop();
    }
    time->setHMS(0,0,0);
    ui->timerLabel->setText(time->toString("hh:mm:ss zzz"));
}

void timerDemo::on_bitBtn_clicked()
{
    count += 1;
    ui->bitEdit->appendPlainText(QString("count %1 time %2").arg(count).arg(time->toString("hh:mm:ss zzz")));
}

main.cpp
#include "timerdemo.h"

#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    timerDemo w;
    w.show();
    return a.exec();
}
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值