我在Windows上使用Qt 5.6(使用opengl桌面标记构建,没有ANGLE),我有一个继承QOpenGLWidget的小部件,如下所示:
class SomeWidget: public QOpenGLWidget, protected QOpenGLFunctions
{
...
}
此窗口小部件添加到主窗口的布局中,并将主窗口作为父窗口。 OpenGL的东西显示得很好。我想最大化或全屏显示该小部件,然后将其恢复到主窗口中的位置/大小。代码看起来像这样:
onFullscreen()
{
// remove widget from layout
// set widget's parent to NULL
// create a new dialog / layout and add widget to it
// call dialog->showFullScreen
}
onRestore()
{
// set parent to main window
// insert in main window layout
// restore original size
// close dialog
}
我还在main()中添加了
app.setAttribute(Qt::AA_ShareOpenGLContexts); // onFullscreen() crashes if this line is not present
当我进入全屏并且看不到红色的清晰颜色时,我得到黑屏。没有错误消息。
有趣的是,如果我用dialog-> showMaximized()替换dialog-> showFullScreen(),原始渲染就会消失,我看不到另一个对话框。
我有相同的方法来显示另一个小部件全屏,它不会导出QOpenGLWidget并且工作正常。
了解发生了什么以及如何在全屏显示QOpenGLWidget并将其恢复到主窗口中的位置?
非常感谢!