Qt는 흥미로운 객체 모델을 가지고 있습니다. 처음 시작했을 때 new Foo
콜이 너무 많고 delete
이 없다는 것이 불안했습니다.
http://qt.nokia.com/doc/4.6/object.html 개체 모델을 읽을 때 좋습니다. 관심의
것들 : QObject를 서브 클래스는 자신의 할당 및 복사 ctor에 방법을 사용할 수 있습니다. 개체 자식 부모 체인은 QObject에 의해 내부적으로 유지 관리됩니다. (당신이 자신을 그 포인터를 관리하는 계획이없는 경우) QObject를 서브 클래스를 인스턴스화 할 때
일반적으로 당신은 부모와 같은 다른 QObject를 포인터를 제공 할 것입니다. 이 '부모'는 방금 한 아이의 관리를 대신합니다. QObject에서 setParent()를 호출하여 누가 그것을 "소유"했는지 변경할 수 있습니다. Qt에는 객체의 부모를 변경하는 메소드가 거의없고, 모두 문서에서 명시 적으로 명시하고 있습니다.
귀하의 특정 질문에 대답하려면 : 귀하의 모든 MyWidget 인스턴스를 어떻게 만드는지에 따라 다릅니다.
부모와 함께 각각을 만든 경우 삭제할 필요가 없습니다. 부모는 삭제되면 삭제합니다.
당신은 그들의
QList<MyWidget*>
수집을 유지하는 경우, 당신은 당신이 그들에게 자신을 삭제해야합니다, 그들에게 부모를 포기하지 않았다.
Qt 컬렉션을 개체의 부모로 설정할 수 없습니다. 동적으로 할당되고 부모 - 자식 관계를 갖는 객체는 QObject이며 QObjects/QWidgets 하위 클래스를 부모로 사용합니다. QList 및 다른 컬렉션 클래스는 QWidget (및 확장 QObject)을 상속하지 않으므로 부모로 설정할 수 없습니다. – blwy10