【发布时间】:2013-04-22 09:05:27
【问题描述】:
我正在尝试使用QObject树删除机制来删除列表以及存储在列表中的所有QObjects。 Qt 仍然是我最擅长的领域...
QList<QObject*>* list = new QList<QObject*>();
QObject* obj1 = new QObject();
QObject* obj2 = new QObject();
obj1->setParent(obj2);
obj2->setParent((QObject*)list);
我在最后一行得到“分段错误”。 QList 不能用作父母吗?不是继承自QObject吗?
编辑:
主要问题 - 是否可以方便地删除列表和所有列表元素而不扩展 QList 类?这需要由客户端调用,所以它必须很简单。
我想简单地打电话:
delete list;
而不是
qDeleteAll(list);
delete list;
【问题讨论】:
-
最大的问题是你为什么要动态分配整个列表。为什么不只是
QList<QObject*> list? -
不可能使用 QList
- 你可以使用 QSharedPointer。