QObject派生类型需要父QObject吗?

Fer*_*eak 5 c++ qt qobject

我正在编写一些派生自的Qt类QObject,它看起来像:

class A : public QObject
{
    Q_OBJECT
public: A() : QObject() {}
.....
}
Run Code Online (Sandbox Code Playgroud)

但在我看到的几个地方,QObject派生类都有一个父类,如:

class A : public QObject
{
    Q_OBJECT
public: A(QObject* parent = 0) : QObject(parent) {}
.....
}
Run Code Online (Sandbox Code Playgroud)

所以问题是:我是否需要父母?如果我有一个,如果我有一个默认的(0)或者根本没有,那有什么区别?

Kun*_*nal 8

因此,您不需要父母.

但设置父级在垃圾收集方面具有一些优势.

如果您设置了父项,那么当父项被删除时,它也将删除其所有子项.

以下摘自文档:

QObjects在对象树中组织自己.当您使用另一个对象作为父对象创建QObject时,该对象将自动将其自身添加到父对象的children()列表中.父母取得对象的所有权; 即,它将自动删除其析构函数中的子项.您可以按名称查找对象,也可以使用findChild()或findChildren()键入.