小部件上下文销毁



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

但是我有一个问题,因为这个网格类有一个析构函数,做一些OpenGL调用清理。当QObject子析构函数启动时,OpenGL上下文已经被销毁,我得到一个段错误。

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

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

也可以使对象成为非指针成员,或将其包装在智能指针中以达到相同的结果。

相关内容

最新更新