QT文档说,从qt5开始,你应该使用QOpenGL *类而不是QGL *。
问题是没有QGLWidget替换。我想出你应该将QWindow与QOpenGLContext结合使用并调用setSurfaceType(OpenGLSurface);。
唯一的问题是QWindow不能将QWidget作为父级。那我怎么能嵌入一个QWindow aka。我的OpenGL绘图表面到其他小部件?
答案 0 :(得分:15)
QT 5.1在一个奇怪的情况下是OpenGL和QWidget
(和派生的)明智的。没有QGLWidget
替换,但所有其他QGL类都有明确的替换。
如果您不想使用旧的QGLWidget
,您确实需要自己制作QWindow
的替代品。所以,首先你设置QWindow
,然后在你打电话setSurfaceType( OpenGLSurface );
之前正确地说出来create();
。然后,您创建一个新的QOpenGLContext
并使用其makeCurrent()
功能并传递您的QWindow
。然后,使用QWidget::createWindowContainer(window);
QWidget
创建QWindow
但这只是一个暂时的黑客攻击,你不应该使用它,除非你真的想要混合QtQuick和QWidget。然后,您可以使用名为5.4.0
的