c++ - 如何在自删除后将对象设置为 nullptr
问题描述
我有一个带有 QDialog 类的对话框窗口。我在头文件中声明它:
MyDialogClass myDialogWindow = nullptr;
并在运行时在某处创建窗口
myDialogWindow = new MyDialogClass(this);
它也是 delf 破坏性的,因为它的属性:
this->setAttribute(Qt::WA_DeleteOnClose);
现在有没有人在没有连接信号的情况下自我删除后如何将 myDialogWindow 指针设置为 nullptr?
提前致谢。
解决方案
如果没有一些信号或事件逻辑,这是不可能的。对象不拥有指针,指针指向对象。
但是,您可以使用为您包装信号处理和归零的 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
}
推荐阅读
- javascript - 如何将对象转换为数组?
- android - 虽然方法存在,但我仍然收到错误:“在父或祖先上下文中找不到方法方法名(视图)”
- c# - 如何在复选框中添加/删除选中的属性?
- bezier - 如何通过用鼠标移动一个点来改变贝塞尔曲线?
- c# - 发送 HidOutputReport 失败
- javascript - 如何将两个组件放置在最左侧和最右侧并在反应中内联?
- git - 如何通过保留 Git 中的文件夹结构来导出被忽略的文件?
- c++ - 从后缀表达式评估变量
- c# - 如何使设计视图与 InitializeComponent 代码对应?
- java - 运算符“+”不能应用于对象和字符串