QT里QTimer为啥stop停不,每次start就会有一个新的计时器跟着一起跑?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了QT里QTimer为啥stop停不,每次start就会有一个新的计时器跟着一起跑?相关的知识,希望对你有一定的参考价值。

connect(ui->stop,&QPushButton::clicked,[=]()

if (ui->stop->text() == tr("开始"))

ui->stop->setText(tr("停止"));
ui->stop->setIcon(QIcon(":/res/wrong2.png"));
ui->stop->setIconSize(QSize(40,40));
timer->start();
connect(timer,&QTimer::timeout,[=]()
if(this->countTime<=0.00)

timer->stop();
bool active=timer->isActive();
qDebug()<<active;
ui->lcdNumber->display("0.00");
ui->stop->setText(tr("开始"));
ui->stop->setIcon(QIcon(":/res/right3.png"));
QMessageBox::information(this,"提示","Time out!");

else

this->countTime=this->countTime-0.01;
if(this->countTime<0.0)

this->countTime=0.0;

char stopTime[32];
sprintf(stopTime,"%.2lf",this->countTime);
ui->lcdNumber->display(stopTime);


);

else if (ui->stop->text() == tr("停止"))

ui->stop->setText(tr("开始"));
ui->stop->setIcon(QIcon(":/res/right3.png"));
ui->stop->setIconSize(QSize(40,40));
timer->stop();
bool active=timer->isActive();
qDebug()<<active;

);

参考技术A 你这代码写的仿佛在做梦追问

百度不给缩进

追答

我说你代码 先判断是否等于开始 然后又设置成停止 然后又判断是否等于开始?能停就怪了

Qt线程下定时做某事

直接在run函数中 while(!m_stop) sleep(2); 为啥要用QTimer呢?搞不懂

以上是关于QT里QTimer为啥stop停不,每次start就会有一个新的计时器跟着一起跑?的主要内容,如果未能解决你的问题,请参考以下文章

QT中的Qtimer 里start(100)开始计时以后,timeout是只触发一次,还是说每到100ms就触发一次??

QT5 Thread线程

qt 计时器自动刷新图片

Qt线程下定时做某事

在不开启事件循环的线程中使用QTimer(QThread::run函数自带事件循环,在构造函数里创建线程,是一种很有意思的线程用法) good

qt 断点停不下来