QT删除子窗口指针问题,使用Qt::WA_DeleteOnClose

易阳 2012-02-18 01:52:47
现在遇到一个内存回收的问题,我的主窗口是QMainWindow,在MainWin.h头文件里定义了一个QDialog类的指针如
QDialog *dialog;
现在MainWin(QMainWindow的对象)里 有如下槽函数语句
if(dialog==null)
{
dialog=new Dialog(this);
dialog->setAttribute(QT::WA_DeleteOnClose,true);
}
dialog.show(),
当我第一次在MainWin里打开关闭dialog都正常,当我第二次再执行打开操作时候,就产生了内存读取冲突的错误,MainWin也自动关闭了,求解,原因和方案,谢谢,本人新手,,
...全文
1671 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
donwmufromdying 2012-10-09
  • 打赏
  • 举报
回复 1
楼上正解了!这种指针成员变量在构造函数中都初始化成NULL,然后在关闭后,delete掉就主动加上XXX=NULL
  • 打赏
  • 举报
回复
是的。。。
领悟的好快。。
artzers 2012-09-30
  • 打赏
  • 举报
回复
我知道了,因为Qt跨平台,所以Qt在C++环境下指针只delete 没有归为Null,所以之后的窗口指针永远不是NULL,更不能show了。其实直接new就可以了
artzers 2012-09-30
  • 打赏
  • 举报
回复
我也是这个问题,求解!

16,249

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧