Qt中定时器的3种实现方法
一.使用QTimer定时器类(首选)
1.示例代码:
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
ui->setupUi(this);
time1 = new QTimer();
time1->setInterval(1000);
connect(time1,SIGNAL(timeout()),this,SLOT(onTimeOut()));
time1->start();
}
void MainWindow::onTimeOut()
{
static int value = 0;
qDebug()timerId()来确定定时器,然后执行某个定时器的超时函数。
(3).void QObject::killTimer ( int id );
通过从startTimer返回的ID传入killTimer 函数中杀死定时器,结束定时器进入超时处理。
注意:kilTimer杀死定时器后,必须再重新创建定时器才能启用定时器。
2.代码示例
(1)test.h
int timerid1;
int timerid2;
void timerEvent(QTimerEvent *e);
(2)test.cpp
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
timerid1 = startTimer(1000,Qt::PreciseTimer);
timerid2 = startTimer(2000,Qt::PreciseTimer);
}
void MainWindow::timerEvent(QTimerEvent *e)
{
if(e->timerId()==timerid1)
{
qDebug("timer1");
}
else if(e->timerId()==timerid2)
{
qDebug("timer2");
}
}
void MainWindow::on_pushButton_clicked()
{
killTimer(timerid1);
timerid1 = 0;
}
void MainWindow::on_pushButton_2_clicked()
{
timerid1 = startTimer(2000);
}
三.静态的singleShot ()函数创建单触发定时器(不推荐)
singleShot函数是一个静态函数,表示只会在被调用时会执行一次操作。其中msec参数是时间,单位为ms,借助此函数可以简单实现一个定时器,定时为100s。
QTimer::singleShot(1*1000,this, &MainWindow::count);
void MainWindow::count()
{
static int num=0;
qDebug()
