代码部分
#ifndef DIALOG_H
#define DIALOG_H
#include <QDialog>
#include <QTimer>
#include <QTime>
namespace Ui {
class Dialog;
}
class Dialog : public QDialog
{
Q_OBJECT
public:
explicit Dialog(QWidget *parent = 0);
~Dialog();
private:
QTimer* fTimer;//定时器
QTime fTimeCounter;//计时器
private slots:
void on_btnStart_clicked();
void on_btnStop_clicked();
void on_btnTimeout_clicked();
private:
Ui::Dialog *ui;
};
#endif // DIALOG_H
.cpp
#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(1000);//设置定时周期,单位:毫秒
connect(fTimer,SIGNAL(timeout()),this,SLOT(on_btnTimeout_clicked()));
}
Dialog::~Dialog()
{
delete ui;
}
void Dialog::on_btnStart_clicked()
{
fTimer->start();//定时器开始
fTimeCounter.start();//计时器开始工作
ui->btnStart->setEnabled(false);
ui->btnStop->setEnabled(true);
ui->btnTimeout->setEnabled(false);
}
void Dialog::on_btnStop_clicked()
{
fTimer->stop();
int tmMsec = fTimeCounter.elapsed();
int ms=tmMsec%1000;
int sec = tmMsec/1000;
QString str = QString::asprintf("流失时间:%d秒,%d 毫秒",sec,ms);
ui->label_5->setText(str);
ui->btnStart->setEnabled(true);
ui->btnStop->setEnabled(false);
ui->btnTimeout->setEnabled(true);
}
//
void Dialog::on_btnTimeout_clicked()
{
//定时器中断相应
QTime curTime = QTime::currentTime();
ui->lcdNumberHour->display(curTime.hour());
ui->lcdNumberMin->display(curTime.minute());
ui->lcdNumberSec->display(curTime.second());
int va = ui->progressBar->value();
va++;
if(va>100)
va=0;
ui->progressBar->setValue(va);
}
全部代码了,方便读者们学习