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();
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM