QTimer的使用
新建UI
在头文件中定义好
void onUpdateLCDNumber1();
void onUpdateLCDNumber2();
槽函数
定义好
QTimer *m_Timer1;
QTimer *m_Timer2;
在mytimer文件定义好connect
ui->lcdNumber->setDigitCount(8);
m_Timer1 =new QTimer;
connect(m_Timer1,SIGNAL(timeout()),this,SLOT(onUpdateLCDNumber1()));m_Timer1->setTimerType(Qt::PreciseTimer);
补充槽函数的定义
void MyTimer::onUpdateLCDNumber1()
{
QString timerStr=QTime::currentTime().toString("hh:mm:ss");
ui->lcdNumber->display(timerStr);
}
补充button的槽函数
void MyTimer::on_pushButton_clicked()
{
if(m_Timer1->isActive())
{
m_Timer1->stop();
ui->pushButton->setText("start");
}
else
{
m_Timer1->start(2000);
ui->pushButton->setText("stop");
//onUpdateLCDNumber1();
}
}
完整代码:
#ifndef MYTIMER_H
#define MYTIMER_H
#include <QWidget>
#include<QTimer>
namespace Ui {
class MyTimer;
}
class MyTimer : public QWidget
{
Q_OBJECT
public:
explicit MyTimer(QWidget *parent = 0);
~MyTimer();
private slots:
void on_pushButton_clicked();
void on_pushButton_2_clicked();
void onUpdateLCDNumber1();
void onUpdateLCDNumber2();
private:
Ui::MyTimer *ui;
//定义两个timer,成员函数加前缀
QTimer *m_Timer1;
QTimer *m_Timer2;
};
#endif // MYTIMER_H
#include "mytimer.h"
#include "ui_mytimer.h"
#include<QTime>
#include<QTimer>
MyTimer::MyTimer(QWidget *parent) :
QWidget(parent),
ui(new Ui::MyTimer)
{
ui->setupUi(this);
ui->lcdNumber->setDigitCount(8);
ui->lcdNumber_2->setDigitCount(8);
m_Timer1 =new QTimer;
connect(m_Timer1,SIGNAL(timeout()),this,SLOT(onUpdateLCDNumber1()));
m_Timer1->setTimerType(Qt::PreciseTimer);
m_Timer2 =new QTimer;
connect(m_Timer2,SIGNAL(timeout()),this,SLOT(onUpdateLCDNumber2()));
m_Timer2->setTimerType(Qt::PreciseTimer);
}
MyTimer::~MyTimer()
{
delete ui;
}
void MyTimer::on_pushButton_clicked()
{
if(m_Timer1->isActive())
{
m_Timer1->stop();
ui->pushButton->setText("start");
}
else
{
m_Timer1->start(2000);
ui->pushButton->setText("stop");
//onUpdateLCDNumber1();
}
}
void MyTimer::on_pushButton_2_clicked()
{
if(m_Timer2->isActive())
{
m_Timer2->stop();
ui->pushButton_2->setText("start");
}
else
{
m_Timer2->start(1000);
ui->pushButton_2->setText("stop");
//onUpdateLCDNumber1();
}
}
void MyTimer::onUpdateLCDNumber1()
{
QString timerStr=QTime::currentTime().toString("hh:mm:ss");
ui->lcdNumber->display(timerStr);
}
void MyTimer::onUpdateLCDNumber2()
{
QString timerStr1=QTime::currentTime().toString("hh:mm:ss");
ui->lcdNumber_2->display(timerStr1);
}