今天在解决软件bug的过程中,注意到QT关于[slot] bool QWidget::close()
有这样一段说明:
If the widget has the Qt::WA_DeleteOnClose flag, the widget is also deleted. A close events is delivered to the widget no matter if the widget is visible or not.
逆向思考,如果我的QWidget或继承于QWidget的派生类没有设置相关的flag:Qt::WA_DeleteOnClose
,那么他是不会自动析构的。情况真是如此吗?
测试环境:
macOS Mojave 10.14
Qt Creator 4.41
Qt 5.9.2
Clang 7.0 apple, 64 bits
场景一: 独立widget,没有flag Qt::WA_DeleteOnClose
widget.cpp
#include "widget.h"
#include "ui_widget.h"
#include <QDebug>
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
}
Widget::~Widget()
{
delete ui;
qDebug() << "Widget::~Widget()";
}
void Widget::on_pushButton_clicked()
{