我已经实现了自己的QOpenGLWidget类。 当到达新的视频帧或调用resizeGL时,我使用update()。
开始时,paintGL可以正常显示视频帧。但是经过一段时间(<3分钟),paintGL仅由resizeGL触发,而不是由新视频帧中的update()触发。
我发现其他人也遇到同样的问题。但尚未发布解决方案。 QOpenGLWidget only updates when resized
How can QOpenGLWidget update not result in paintGL events?
QOpenGLWidget stops repainting on update()
更新: 当我仅渲染一个QOpenGLWidget时,一切都很好。但是当两个或更多时 较大的将很快冻结。
答案 0 :(得分:0)
最后,我找到了答案。
我必须在主线程中调用qt的update()方法。您可以通过QT的sig-slot来实现。
我只是想知道,为什么必须在主线程中调用update(),这是QT错误吗?