【发布时间】:2013-08-01 17:30:54
【问题描述】:
QT 文档说,从 qt5 开始,您应该使用 QOpenGL* 类而不是 QGL*。
问题是没有 QGLWidget 替换。我发现您应该将 QWindow 与 QOpenGLContext 结合使用并调用 setSurfaceType( OpenGLSurface );。
唯一的问题是 QWindow 不能有 QWidget 作为父级。那么我怎样才能嵌入一个 QWindow aka。我的 OpenGL 绘图表面到其他小部件?
【问题讨论】:
-
我要引用我的另一条评论:基本上如this blog post 中所述。对于其他所有内容,您只需阅读相关类的文档。我会使用 QWindow,在 create() 之前调用 setSurfaceType(QSurface::OpenGLSurface) ,然后创建一个新的 QOpenGLContext 并使用它的 makeCurrent() 函数将 QWindow 传递给它。如需更简单的解决方案,请等待5.2.0。
-
另外,请阅读 this discussion 以了解弃用可能是过早的一个次要版本。
-
@Bart 我不只是想发布一些链接并将其作为答案插入,但我将从帖子中复制一些代码 sn-ps 并作为答案跨度>
-
不幸的是,他们没有在 5.2 中添加 OpenGLWidget -_-
-
@Alexander 初步支持(未记录)将在 5.3 中,实际版本将在 5.4 中,目前正在进行中,您可以看到 here (header) 和 here (source)。 (我发布的链接将保持不变,因此如果您稍后阅读此内容,它们可能不会反映进度状态)