QDialog删除了QLayout?

时间:2013-08-21 21:39:23

标签: c++ qt memory-management qt4

我有一个Qt4应用程序,它有很多对话框。我很想知道QDialog是否删除了它的布局。举个例子:

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 个答案:

答案 0 :(得分:1)

QDialog将在销毁时删除QLayout。您无需在析构函数中删除布局。

另请参阅:http://doc-snapshot.qt-project.org/qt5-stable/qtwidgets/qwidget.html#setLayout