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