Qt 定时器实现循环

概述

后台进程需要循环时第一时间想到的就是while,但是涉及界面交互时就不那么适用了,例如在Qt主线程中直接使用循环就会导致界面卡死,此时可以使用多线程来解决这个问题,但只是做一些简单的测试工具时,考虑线程大可不必。第二种方法就是在while中加入qApp->processEvents()避免界面冻结,但这个方法会造成关闭界面窗口时程序仍然在后台运行不能完全退出,解决这个问题就是先让while主动结束。另一个方法就是使用定时器周期执行事件来等效循环体,这样整个过程被切为片运行就不会一直占用主线程造成界面不刷新了。

定时器语法

定义

QTimer *timer;

初始化

timer = new QTimer(this);
timer->setInterval(200);
connect(timer, SIGNAL(timeout()), this, SLOT(on_timeout()));

销毁

delete timer;

信号槽

void MainWindow::on_timeout()
{
    timer->stop();

    if(do_something() != 0)
    {
        return;
    }

    timer->start();
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值