Qt定时器实现循环
概述
后台进程需要循环时第⼀时间想到的就是while,但是涉及界⾯交互时就不那么适⽤了,例如在Qt主线程中直接使⽤循环就会导致界⾯卡死,此时可以使⽤多线程来解决这个问题,但只是做⼀些简单的测试⼯具时,考虑线程⼤可不必。第⼆种⽅法就是在while中加⼊qApp->processEvents()避免界⾯冻结,但这个⽅法会造成关闭界⾯窗⼝时程序仍然在后台运⾏不能完全退出,解决这个问题就是先让while主动结束。另⼀个⽅法就是使⽤定时器周期执⾏事件来等效循环体,这样整个过程被切为⽚运⾏就不会⼀直占⽤主线程造成界⾯不刷新了。
定时器语法
定义
QTimer *timer;
初始化
timer = new QTimer(this);
timer->setInterval(200);
connect(timer, SIGNAL(timeout()), this, SLOT(on_timeout()));
销毁
timeout on t2 timerdelete timer;
信号槽
void MainWindow::on_timeout()
{
timer->stop();
if(do_something() != 0)
{
return;
}
timer->start();
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论