gpt4 book ai didi

c++ - 在循环中更新 Qt GUI(将位图图像显示为电影)

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:54:29 25 4
gpt4 key购买 nike

我从套接字接收截图作为位图,当我只显示其中一个时它工作但是当我进入循环时(显示所有接收图像来制作电影)我挂了

void ShowImageBuffer(char* buf,int sizeofimagebuffer )
{
QByteArray byte=QByteArray::fromRawData(buf, sizeofimagebuffer );
QPixmap image;
if(image.loadFromData(byte,"BMP"))
{
ui->label->setPixmap(image);
ui->label->update();
}
}



while(1)
{
ShowImageBuffer(buf, sizeofimagebuffer)
}

我必须使用单独的线程吗?(但我认为我们不会使用任何线程来更改 GUI?)

什么是使其实时化的最佳选择?

最佳答案

我想问题是您没有以这种方式返回到事件循环。 update()您使用的方法不会立即重新绘制 QWidget。它安排更新该区域的请求,如果有可用的话,该请求与其他未决请求统一。当执行返回到事件循环时,将处理此请求。文档中有明确说明。

您可能想要使用 QTimer 并以特定帧速率调用 ShowImageBuffer 方法。当 ShowImageBuffer 完成时,执行返回到事件循环,从而有时间处理 update() 请求。还要考虑 AJG85 建议的改进。

否则你可以看看repaint()立即调用 paintEvent() 方法的方法,但我仍然认为您应该设置特定的帧速率以获得良好的结果。我会选择 QTimer 方式。

关于c++ - 在循环中更新 Qt GUI(将位图图像显示为电影),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12010281/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com