QOpenGLWidget全屏切换

时间:2016-06-14 16:02:57

标签: c++ windows qt opengl qt5

我在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并将其恢复到主窗口中的位置?

非常感谢!

0 个答案:

没有答案