用到了定时器和计时器,定时器发出timeout()信号,就更新lcdnumber上的数值。
#include "dialog.h"
#include "ui_dialog.h"
Dialog::Dialog(QWidget *parent)
: QDialog(parent)
, ui(new Ui::Dialog)
{
ui->setupUi(this);
fTimer = new QTimer(this);
fTimer->stop();
fTimer->setInterval(100);//设置定时周期 毫秒
connect(fTimer, SIGNAL(timeout()),this, SLOT(on_timer_timeOut()));
}
Dialog::~Dialog()
{
delete ui;
}
void Dialog::on_timer_timeOut()
{
value++;
if(value>100)
value = 0;
ui->lcdNumber->display(value);
ui->progressBar->setValue(value);
}
void Dialog::on_BtnStart_clicked()
{
fTimer->start();
fTimeCounter.start();
}
void Dialog::on_BtnStop_clicked()
{
fTimer->stop();
int msec = fTimeCounter.elapsed();
int ms = msec%1000;
int sec = msec/1000;
QString str = QString::asprintf("%d sec %d ms",sec,ms);
ui->label_Time->setText(str);
}
void Dialog::on_BtnRestart_clicked()
{
value = 0;
ui->lcdNumber->display(value);
ui->progressBar->setValue(value);
}
#ifndef DIALOG_H
#define DIALOG_H
#include <QDialog>
#include <QTime>
#include <QTimer>
QT_BEGIN_NAMESPACE
namespace Ui { class Dialog; }
QT_END_NAMESPACE
class Dialog : public QDialog
{
Q_OBJECT
public:
Dialog(QWidget *parent = nullptr);
~Dialog();
private:
Ui::Dialog *ui;
QTimer *fTimer; //定时器
QTime fTimeCounter;//计时器
int value = 0;//计数
private slots:
void on_timer_timeOut();//定时器溢出处理槽函数
void on_BtnStart_clicked();
void on_BtnStop_clicked();
void on_BtnRestart_clicked();
};
#endif // DIALOG_H