2014-11-24 138 views
0

我用下面的命令來創建和顯示一個窗口:如何刪除窗口?

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; 
} 

然而,我發現,當我點擊創建窗口的關閉按鈕。儘管窗口消失了,但是這些窗口不會被破壞。 我怎樣才能讓它正確刪除?

+0

是'msettings'聲明爲'QGCSettingsWidget'類的成員? – rhodysurf 2014-11-24 14:54:32

+0

這裏是[MAVLinkSettingsWidget](https://github.com/diydrones/apm_planner/blob/master/src/ui/MAVLinkSettingsWidget.cc)。第二個參數是「父」。 – Ezee 2014-11-24 15:03:43

回答

1

當您關閉它不被破壞的窗口,但如果你沒有設置屬性WA_DeleteOnClose隱藏:

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