我使用以下命令创建并显示一个窗口:
QGCSettingsWidget* settings = new QGCSettingsWidget(this);//here this means the mainwindow
settings->show();
构造函数如下:
QGCSettingsWidget::QGCSettingsWidget(QWidget *parent, Qt::WindowFlags flags) :
QDialog(parent, flags),
mainWindow((MainWindow*)parent),
ui(new Ui::QGCSettingsWidget)
{
ui->setupUi(this);
....
MAVLinkSettingsWidget* msettings = new MAVLinkSettingsWidget(mavlink, this);//set its parent to be this.
}
解构主义是:
QGCSettingsWidget::~QGCSettingsWidget()
{
delete ui;
}
然而,当我点击创建窗口的关闭按钮时,我发现了。虽然窗口消失,但msettings没有被破坏。 我怎样才能正确删除?
答案 0 :(得分:1)
当你关闭一个窗口时,如果你没有设置属性WA_DeleteOnClose
,它就不会被破坏但会隐藏:
settings->setAttribute(Qt::WA_DeleteOnClose);
settings->show();