如何删除窗口?

时间:2014-11-24 14:40:48

标签: c++ qt

我使用以下命令创建并显示一个窗口:

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没有被破坏。 我怎样才能正确删除?

1 个答案:

答案 0 :(得分:1)

当你关闭一个窗口时,如果你没有设置属性WA_DeleteOnClose,它就不会被破坏但会隐藏:

settings->setAttribute(Qt::WA_DeleteOnClose);
settings->show();