QGLWidget上下文破坏

时间:2014-06-24 16:47:23

标签: c++ qt opengl qobject qglwidget

我有一个名为Mesh的类包装和OpenGL对象,包含VBO,纹理等。此类继承自QObject,其父级设置为QGLWidget。因此,一旦我关闭小部件,它将被QObject系统删除。

但是我有一个问题,因为这个网格类有一个析构函数,可以执行一些OpenGL调用来清理。当QObject子析构函数启动时,OpenGL上下文已被破坏,我得到一个段错误。

如何确保在~Mesh()上下文被删除之前调用我的QGLWidget析构函数?

1 个答案:

答案 0 :(得分:1)

您可以在Mesh派生类的析构函数中显式删除QGLWidget对象,因为您放在那里的所有内容都将在~QGLWidget()本身之前(以及{{1}之前)执行}负责删除子对象。)

或者您可以将对象设为非指针成员,或将其包装在智能指针中以获得相同的结果。