Qt显示对话框程序崩溃

问题描述

创建一个继承自QDialog的对话框DialogA,在主窗体显示之前进行显示,当执行DialogA的exec函数时,程序崩溃,提示:Critical error detected c0000374

问题排查

查看DialogA类中的内存创建是否存在异常,排查后未发现此问题。注释程序主体代码,程序运行正常,没有崩溃。局部放开注释代码,缩小问题点。经过调试,崩溃点:this->setAttribute(Qt::WA_DeleteOnClose); 删除该属性定义,问题解决。

原因分析

当 QDialog::exec() 被调用时,它会进入一个局部事件循环。如果 Qt::WA_DeleteOnClose 属性被设置,当对话框关闭时,Qt 会尝试删除对话框对象。如果此时事件循环中还有未处理的事件或者定时器槽函数试图访问该对话框,就可能导致崩溃。

问题验证

cpp 复制代码
DialogA dialog;
int result = dialog.exec();
if (result != QDialog::Accepted)
{
	return -1;
}

在return语句处打上断点,程序会多次进入该断点处。

相关推荐
曹牧4 小时前
Oracle:将包含属性(Attributes)的 XML 数据解析为表格数据
xml·数据库·oracle
byzh_rc4 小时前
[AI编程从入门到入土] 装饰器decorator
开发语言·python·ai编程
@小匠4 小时前
Redis RDB持久化之 save 自动备份检查机制
数据库·redis·bootstrap
贫民窟的勇敢爷们4 小时前
Java 与 Python 如何选型与融合
java·开发语言·python
流氓也是种气质 _Cookie4 小时前
Chrome Performance常见名词解释(FP, FCP, LCP, DCL, FMP, TTI, TBT, FID, CLS)
开发语言·javascript·ecmascript
折哥的程序人生 · 物流技术专研4 小时前
从“卡死”到“跑通”:WMS机器学习全流程实战排坑记
数据库·人工智能·机器学习
上海云盾商务经理杨杨4 小时前
Web渗透核心漏洞:SQL注入漏洞测试与修复实战
数据库·sql·安全
gihigo19984 小时前
基于MATLAB的LTE物理层仿真系统
开发语言·matlab
刚子编程4 小时前
C# Join 实战:左连接写法、字符串拼接与 EF Core 性能调优
开发语言·c#·solr·join
2303_821287384 小时前
c++ RAII机制详解 c++如何利用RAII管理资源
jvm·数据库·python