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

相关推荐
Red丶哞3 分钟前
内网自建Postfix使用Python发送邮件
开发语言·python
静心观复6 分钟前
使用 new 关键字和 Java 反射创建对象的区别
java·开发语言
Liu6288810 分钟前
C++中的模板方法模式
开发语言·c++·算法
道清茗16 分钟前
【MySQL知识点问答题】 MySQL 配置参数和内存管理
数据库·mysql
qq_3349031517 分钟前
高性能网络协议栈
开发语言·c++·算法
阿贵---21 分钟前
模板编译期循环展开
开发语言·c++·算法
2601_9540236621 分钟前
Beyond the Hype: Deconstructing the 2025 High-Performance Stack for Agencies
java·开发语言·算法·seo·wordpress·gpl
2401_8845632423 分钟前
进阶技巧与底层原理
jvm·数据库·python
2401_8732046523 分钟前
使用Pandas进行数据分析:从数据清洗到可视化
jvm·数据库·python
ZGi.ai24 分钟前
生产级 Agent 编排 从单一 LLM 调用到多智能体工作流的工程设计
大数据·数据库·人工智能