Qt界面假死原因

avatar
作者
猴君
阅读量:0

创建一个播放器类,继承QLabel,在播放器类中起一个线程用ffmpeg取流解码,将解码后的图像保存到队列,在gui线程中调用update()刷新显示。

当ffmpeg打开视频流失败后调用update()将qlabel刷新为黑色,有一定概率会使得qlabel界面假死,此时切换到其它界面再返回到当前界面,qlabel恢复显示。

禁用取流解码线程中调用的update()后,则不会再出现假死的现象。

chatgpt回答

这是因为 Qt 的 GUI 库不是线程安全的,所有的 GUI 操作都必须在主线程中执行。

如果你尝试在不同的线程中调用 update(),可能会导致不可预知的行为和崩溃。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!