class Dialog : public QDialog
{
private:
QTimer *fTimer; //定时器
QTime fTimeCounter;//计时器
private slots:
void on_timer_timeout () ; //定时溢出处理槽函数
};
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_timer_timeout()));
}
void Dialog::on_timer_timeout()
{
//定时器中断响
QTime curTime=QTime::currentTime(); //获取当前时间
ui->LCDHour->display (curTime.hour()); //显示小时
ui->LCDMin->display (curTime.minute()); //显示分钟
ui->LCDSec->display(curTime.second()); //显示秒
int va=ui->progressBar->value();
va++;
if (va>100)
va=0;
ui->progressBar->setValue(va);
}
设置定时器的周期,只需调用 Qtimer::setlnterval() 函数即可。
QTimer::start() 函数用于启动定时器,界面上的“开始”按钮代码如下:
void Dialog::on_btnStart_clicked()
{
fTimer->start () ;//定时器开始工作
fTimeCounter.start () ; //计时器开始工作
ui->btnStart->setEnabled(false);
ui->btnStop->setEnabled(true);
ui->btnSetIntv->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->LabElapsTime->setText(str);
ui->btnStart->setEnabled(true);
ui->btnStop->setEnabled(false);
ui->btnSetIntv->setEnabled(true);
}
联系客服