繁体   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