QWindow如何取代QGLWidget



QT文档说,由于qt5,您应该使用QOpenGL*类而不是QGL*。

问题是没有QGLWidget替代品。我发现应该将QWindow与QOpenGLContext一起使用,并调用setSurfaceType(OpenGLSurface);。

唯一的问题是QWindow不能将QWidget作为父级。那么我该如何嵌入QWindow aka呢。我的OpenGL绘图表面到其他小工具?

QT 5.1在OpenGL和QWidget(及其派生)方面处于一种奇怪的情况。没有QGLWidget替换,但所有其他QGL类都有明确的替换。

如果你不想使用旧的QGLWidget,你必须自己制造一个QWindow的替代品。因此,首先设置QWindow,然后,正如你正确地说的那样,在调用create();之前先调用setSurfaceType( OpenGLSurface );。然后创建一个新的QOpenGLContext,使用它的makeCurrent()函数并传递QWindow。然后使用QWidget::createWindowContainer(window);QWindow创建QWidget

但这只是一个临时的破解,除非你真的想把QtQuick和QWidget混合在一起,否则你不应该使用它。然后,您可以用5.2.05.4.0中名为QOpenGLWidget

的实际替换来替换此临时破解

相关内容

  • 没有找到相关文章

最新更新