• 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();
    }
    
  • 相关阅读:
    获取定位
    关于meta 总结
    关于微信 ios的部分兼容(摇动播放)
    mysql
    js_DOM的导航属性--Dom_event事件
    IO阻塞与IO非阻塞2
    进程池
    生产消费者模型
    队列----------------多线程利器
    信号量
  • 原文地址:https://www.cnblogs.com/llil/p/14451755.html
Copyright © 2020-2023  润新知