创建显示对话框后关闭对话框的问题

大树学长 2020-04-21 06:12:56
今天做过功能发现再关闭对话框时程序强退了,
代码简化是这样

class Progress : public QDialog头文件中是这样



//创建并显示这个对话框
Progress *dlg = new Progress;
dlg->setModal(true);
dlg->show();


//关闭对话框使用很多方法都会强退、没反应、卡死等等这里要怎么关闭对话框?
delete dlg;
dlg = NULL;

网上找的方法也不尽人意,主要是每次关闭对话框后,后面功能会重新创建显示打开对话框
...全文
258 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
ys_1331 2020-04-24
  • 打赏
  • 举报
回复
accept() reject()试过没
qiushot 2020-04-23
  • 打赏
  • 举报
回复
dlg.exec()执行的对话框,一样可以用代码关的,给这个对话框发送个QCloseEvent关闭事件。
lwydezh 2020-04-22
  • 打赏
  • 举报
回复
你好,可以考虑用对话框的这个属性:setAttribute(Qt::WA_DeleteOnClose); 看看合适不。
大树学长 2020-04-22
  • 打赏
  • 举报
回复
引用 3 楼 丁劲犇 的回复:
dlg->deleteLater();
试过软件还是会强退
大树学长 2020-04-22
  • 打赏
  • 举报
回复
引用 2 楼 未狂 的回复:
你Progress已经是QDialog,setModal就没有意义 Progress dlg; dlg.exec() 就可以,完全不需要手动释放资源
我是准备做一个进度条对话框,所以需要自定义打开和关闭对话框,dlg.exec()后好像不能用代码关闭了吧
  • 打赏
  • 举报
回复
dlg->deleteLater();
未狂 2020-04-21
  • 打赏
  • 举报
回复
你Progress已经是QDialog,setModal就没有意义 Progress dlg; dlg.exec() 就可以,完全不需要手动释放资源
大树学长 2020-04-21
  • 打赏
  • 举报
回复
动态创建控件使用完删除也出现过这样的情况,最后都只能使用hide()函数来隐藏起来了

16,173

社区成员

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

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