Qt5 QMainWindow组件删除

时间:2016-10-04 17:00:54

标签: c++ qt qt5

我们的一位老师要求我们创建一个没有任何主窗口UI文件的Qt应用程序(QMainWindow)。通常我总是创建一个,留空,让 uic 处理它。

我知道如果在窗口小部件(子窗口)与其父窗口之间定义了父关系,则无需删除窗口小部件(删除父窗口时删除)。因此,当删除UI时,所有子项都将被销毁。

如果我们不使用UI文件(未生成),我们是否必须手动删除添加到GUI的所有窗口小部件?

一点点样本:

MainWindow::MainWindow(QWidget* parent) : QMainWindow(parent){
     layout = new QHBoxLayout(this);
     aButton = new QButton(this);
     layout->addWidget(aButton);
     ...
}

MainWindow::~MainWindow(){
    delete ui; // No need to delete more if parental relation.
    // However, what do we do if no ui has been generated?
    // Do we have to delete aButton?
}

parent的值为0.它是应用程序的主要条目。

由于

1 个答案:

答案 0 :(得分:3)

请参阅this article

  QW小部件是Qt Widgets模块的基础类,它扩展了父子关系。儿童通常也成为儿童小部件,即它在父母的坐标系中显示,并由其父母的边界以图形方式剪裁。例如,当应用程序在关闭后删除消息框时,消息框的按钮和标签也会被删除,就像我们想要的那样,因为按钮和标签是消息框的子项

所以,你使用ui没有区别。删除窗口时,其所有子项也将被删除。