求大佬指点迷津!!折磨我好久了,没办法解决了,头绪都没有
如图所示,在QDockWidget父类窗口停靠时,功能一切正常。4个窗口的类型
为QGLYuv420Widget,继承方式如下:
class QGLYuv420Widget : public QOpenGLWidget, protected QOpenGLFunctions。
问题描述:
1、当QDockWidget父类窗口漂浮起来,就白屏了。
2、隐藏4个窗口,再漂浮,不会白屏
3、在main函数中,QCoreApplication::setAttribute(Qt::AA_UseDesktopOpenGL),改为QCoreApplication::setAttribute(Qt::AA_UseOpenGLES),漂浮状态没有问题,不过视频窗口无法工作。
尝试设置QCoreApplication::setAttribute(Qt::AA_ShareOpenGLContexts);
142. 在停靠窗体QDockWidget和QOpenGLWidget同时使用的时候,从嵌入状态切换到浮动状态或者浮动状态切换到嵌入状态,QOpenGLWidget的上下文会被打乱导致白屏失效,需要在main函数中开头位置设置下共享OpenGL上下文。
```cpp
int main(int argc, char *argv[])
{
//需要设置共享上下文不然停靠窗体从正常到浮动后QOpenGLWidget窗体会失效
#if (QT_VERSION > QT_VERSION_CHECK(5,4,0))
QCoreApplication::setAttribute(Qt::AA_ShareOpenGLContexts);
#endif
QApplication a(argc, argv);
...
}
```