Qt наверняка имеет интересную объектную модель. Когда я только начинал, меня беспокоило, что было так много new Foo
вызовов, а не delete
с.
http://qt.nokia.com/doc/4.6/object.html Хорошее место для начала чтения объектной модели.
Вещи, представляющие интерес:
Подклассы QObject имеют свои методы присваивания и копирования-ctor отключенными. Цепочка объектов child-parent поддерживается внутри QObject.
Обычно при создании экземпляра подкласса QObject (если вы не планируете управлять его указателем самостоятельно), вы предоставляете другой указатель QObject в качестве родителя. Этот «родитель» затем берет на себя управление ребенком, которого вы только что сделали. Вы можете вызвать setParent () для объекта QObject, чтобы изменить того, кто «владеет» им. В Qt очень мало методов, которые изменят родительский объект, и все они явно заявляют, что они делают в документах.
Итак, чтобы ответить на ваш конкретный вопрос: это зависит от того, как вы создали все свои экземпляры MyWidget.
Если вы сделали каждый с родителем, то нет, вам не нужно их удалять. Родитель удалит их при удалении.
Если вы храните коллекцию из них QList<MyWidget*>
, и вы не дали им родителя, вы должны удалить их самостоятельно.