怎么处理指针删除后,不被其它地方用

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!谢谢,望采纳!