在QT中,一切继承自QT自有类的类,如果存在parent指针,那么当parent指针delete时,该类中的指针(它们都属于parent指针对应的child指针)也会被delete。
综上,如果我们的窗口对应的类所对应的parent指针为NULL的话,我们还是要进行一次手动的内存管理。我这里举个例子,方便期间,只在文件里展示了析构函数。
#ifndef ACCOUNTDIALOG_H #define ACCOUNTDIALOG_H #include<QDialog> #include<QString> #include"Manage.h" #include<ui_accountdialog.h> class AccountDialog :public QDialog, public Ui::AccountDialog, public ToolNeed { Q_OBJECT public: AccountDialog(Manage *m, int, QWidget *parents = 0); ~AccountDialog() { delete buttonGroup; } private slots: void Okbutton(); void buttonGroupChanged(int); void on_AccountButton_clicked(); private: QButtonGroup *buttonGroup = new QButtonGroup; int option; Manage *adminptr; }; #endif // ACCOUNTDIALOG
当QT窗口被关闭时,如果我们想要让该窗口对应的析构函数运行,我们要在该类的构造函数中加入以下代码:
setAttribute(Qt::WA_DeleteOnClose);
这样,当close()槽函数被调用时,就会调用析构函数进行析构。