我知道,在Qt中,父对象拥有其子对象的所有权。但是,如果我有自己的类派生自Qt类,我是否需要在派生类的析构函数中控制内存,或者Qt是否为我执行此操作?以下是一个例子:
#include <QWidget>
#include <QPushButton>
class MyWidget: public QWidget{
public:
MyWidget(QWidget* parent = 0): QWidget(parent) {
this->setAttribute(Qt::WA_DeleteOnClose);
m_button = new QPushButton(this);
}
~MyWidget() { delete m_button; } // do I need this to prevent leaks?
private:
QPushButton* m_button;
}
所以我的问题是,我是否需要~MyWidget()
来防止内存泄漏?或者QWidget
会以某种方式为我管理记忆吗?
答案 0 :(得分:3)
不,不,QObject
处理。只要它在父子树中,就会收集所有派生的东西。 QWidget
继承QObject
,您继承QWidget
。所以你们都准备好了。
请注意,仍有许多Qt类型不会继承QObject
。更好地看待文档是肯定的。