QT有个场景,我的有两个cpp,第一个头文件中声明了第二个窗体的指针。在第二个窗体的构造函数里加了一个
setAttribute(Qt::WA_DeleteOnClose);
意思是点第二个窗体上的x时,会删除。
当我在第一个窗体的第一个按钮里加了new 了第二个窗体的指针 *form,并弹出第二个窗体,然后点第二个窗体的X,我看到第二个窗体的析构函数执行了。
我在第一个窗体的第二个按钮里,也去访问第二个窗体的指针,因为这个针指好象变成野指针,所以我没法用 if( form) 去判断为不空,因为我不知道该怎么把那个指针设为NLL.
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
void dealTimeout();
void dealDone();
void StopThread();
void DoWork();
Form *form =nullptr;
..................
}
void MainWindow::on_pushButton_2_clicked()
{
if(!form)
{
form=new Form();
}
form->show();
}
void MainWindow::on_pushButton_3_clicked()
{
if(form)
form->setWindowTitle("a");
}
////////////////////////////
#include "form.h"
#include "ui_form.h"
#include "qdebug.h"
Form::Form(QWidget *parent) :
QWidget(parent),
ui(new Ui::Form)
{
ui->setupUi(this);
setAttribute(Qt::WA_DeleteOnClose);
Qt::WindowFlags flags=this->windowFlags();
setWindowFlags(flags|Qt::WindowMinMaxButtonsHint);
}
Form::~Form()
{
delete ui;
qDebug()<<"aaa";
}
你删除窗口指针或,将他设置为空;delete form;form=nullptr!谢谢,望采纳!