首页 > 解决方案 > 如何在自删除后将对象设置为 nullptr

问题描述

我有一个带有 QDialog 类的对话框窗口。我在头文件中声明它:

MyDialogClass myDialogWindow = nullptr;

并在运行时在某处创建窗口

myDialogWindow = new MyDialogClass(this);

它也是 delf 破坏性的,因为它的属性:

this->setAttribute(Qt::WA_DeleteOnClose);

现在有没有人在没有连接信号的情况下自我删除后如何将 myDialogWindow 指针设置为 nullptr?

提前致谢。

标签: c++qt

解决方案


如果没有一些信号或事件逻辑,这是不可能的。对象不拥有指针,指针指向对象。

但是,您可以使用为您包装信号处理和归零的 QPointer。

QPointer<MyDialogClass> myDialogWindow;
myDialogWindow = new MyDialogClass(this);
myDialogWindow->setAttribute(Qt::WA_DeleteOnClose);

// some time later, check dialog has not been closed
if( ! myDialogWindow.isNull() )
{
    // do something with dialog
}

推荐阅读