簡體   English   中英

在仍然進行非GUI工作的同時,如何以預定間隔更新GUI?

[英]How to update the GUI at a pre-determined interval, while still doing non-GUI work?

基本上,我正在做一些圖像處理,並在QLabel中使用QImage來顯示視頻序列中的當前幀。 假設我想以30 fps的速度將QImage更新到下一幀(或者如果在30 fps的間隔內未完成某些處理,請等到完成為止),但是我不希望整個程序在30 fps的過程中停止。

所以流程是...

if (done_some_work && 30fps_interval_has_passed)
{
   updateQImage();
}

如何在Qt中完成? 謝謝!

並使用QTimer發送信號每1000/30毫秒重新繪制一幀

myTimer= new QTimer(this);
myTimer->setInterval(1000/fps); // ms
connect(myTimer, SIGNAL(timeout()), this, SLOT(doNextFrame())); 

// where
public slots:
    virtual void doNextFrame() {repaint();}

注釋是正確的,您應該在另一個線程中進行工作,然后在要進行視覺更新時發出要更新UI線程的信號。 不要在UI線程上進行處理工作,否則您的GUI將無響應。 與其說是QT問題,還不如說是GUI問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM