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语句处打上断点,程序会多次进入该断点处。

相关推荐
AIFQuant13 小时前
如何利用免费股票 API 构建量化交易策略:实战分享
开发语言·python·websocket·金融·restful
Hx_Ma1613 小时前
SpringMVC返回值
java·开发语言·servlet
独自破碎E13 小时前
【滑动窗口+字符计数数组】LCR_014_字符串的排列
android·java·开发语言
布局呆星13 小时前
SQLite数据库的介绍与使用
数据库·python
2401_8384725113 小时前
用Python和Twilio构建短信通知系统
jvm·数据库·python
2601_9494800613 小时前
【无标题】
开发语言·前端·javascript
石头wang13 小时前
oracle jdbc 依赖以及对dbeaver的性能影响,如何选择oracle驱动, oracle jdbc 驱动
数据库·oracle
Jack_David13 小时前
Java如何生成Jwt之使用Hutool实现Jwt
java·开发语言·jwt
weixin_4521595513 小时前
如何从Python初学者进阶为专家?
jvm·数据库·python
瑞雪兆丰年兮13 小时前
[从0开始学Java|第六天]Java方法
java·开发语言