QLabel不会随着Pixmap的convertFromImage方法刷新

3

我使用QLabel来显示一个伪视频流。由于我需要对像素进行大量计算,所以我使用QImage的bits()函数,然后将其转换为pixmap以在QLabel上显示。到目前为止,我一直在使用:

for(...)
{
    computeImage(&myImage);
    myLabel->setPixmap(QPixmap::fromImage(myImage));
}

然而,由于QPixmap::fromImage(...)函数总是创建一个新的QPixmap对象,因此我尝试了以下更高效的方法:

QPixmap myPixmap;
for(...)
{ 
    computeImage(&myImage);
    bool b = myPixmap.convertFromImage(myImage);
    myLabel->setPixmap(myPixmap);
}

在第一次显示时它可以正常工作,但之后就不会刷新了。"b"变量始终为true,因此转换成功。我甚至尝试过repaint()update()标签,但没有效果。标签仍然永远显示第一张图片。


你解决了这个问题吗?我有完全相同的问题... - daaxix
1个回答

1
你的每秒帧数 (fps) 是多少?你能试着在图片之间加上一些时间间隔吗?我认为也需要更新(update() )。

我认为你可能是对的。它可能在快速循环,不让事件循环处理。可能需要调用qApp.processEvents。 - jdi
实际上,for循环只是为了简化代码示例。(对此感到抱歉)实际上,for循环是一个插槽函数,每秒调用约7次。因此,这不是时间问题。我之前已经尝试过update(),但它没有起作用。我甚至放置了qApp.processEvents,但仍然无法解决问题。还有其他想法吗?谢谢。 - user1159845

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接