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

相关推荐
柚几哥哥几秒前
Redis 优化实践:高性能设备缓存系统设计
数据库·redis·缓存
没有bug.的程序员几秒前
Java IO 与 NIO:从 BIO 阻塞陷阱到 NIO 万级并发
java·开发语言·nio·并发编程·io流·bio
无情的8861 分钟前
S11参数与反射系数的关系
开发语言·php·硬件工程
AIFQuant2 分钟前
2026 澳大利亚证券交易所(ASX)API 接入与 Python 量化策略
开发语言·python·websocket·金融·restful
fen_fen5 分钟前
SqlServer新增schema和用户的命令
数据库·sqlserver
肆悟先生5 分钟前
3.18 constexpr函数
开发语言·c++·算法
别在内卷了7 分钟前
三步搞定:双指针归并法求两个有序数组的中位数(Java 实现)
java·开发语言·学习·算法
人工干智能7 分钟前
python的高级技巧:Pandas中的`iloc[]`和`loc[]`
开发语言·python·pandas
小蜗的房子7 分钟前
Oracle 19c RAC重建AWR步骤详解
linux·运维·数据库·sql·oracle·操作系统·oracle rac
wjs20248 分钟前
Chart.js 混合图:深入解析与实战指南
开发语言