2013-08-21 5 views
0

나는 수많은 대화 상자를 가지고있는 Qt4 응용 프로그램을 가지고 있습니다. QDialog가 레이아웃을 삭제하는지 여부를 알고 싶습니다. 예를 들어 보자QDialog는 QLayout을 삭제합니까?

class MyDialog : public QDialog { 
    public: 
    MyDialog(QWidget* _parent = 0) : QDialog(_parent) { 
     //instantiate some widgets 
     m_layout = new QGridLayout(this); 
     setLayout(m_layout) 
     //add some widgets to the layout 
    } 

    ~MyDialog() { 
     //Do I need this code? or will the parent delete the layout? 
     //delete m_layout; 
    } 
private: 
    QGridLayout* m_layout; 
} 

을 그래서 난 내 자신의 소멸자를 작성해야합니까? 또는 QDialog가 메모리 관리를 처리합니까 m_layout?

답변

1

QDialog은 삭제시 QLayout을 삭제합니다. 소멸자에서 레이아웃을 삭제할 필요는 없습니다.

은 참조 : http://doc-snapshot.qt-project.org/qt5-stable/qtwidgets/qwidget.html#setLayout

+1

어쩌면 약간의 확장은 그 QObject를의 모든 자손과 함께 사용할 수있는 동작입니다 말 [http://qt-project.org/doc/qt-4.8/objecttrees.html] (http://qt-project.org/doc/qt-4.8/objecttrees.html) – jbh

관련 문제