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

相关推荐
普通网友3 分钟前
如何在CentOS部署青龙面板并实现无公网IP远程访问本地面板
开发语言·后端·golang
sa100274 分钟前
基于Python的网络爬虫技术研究
开发语言·爬虫·python
API小爬虫9 分钟前
如何利用 Java 爬虫获取京东商品详情信息
java·开发语言·爬虫
画扇落汗12 分钟前
Python 几种将数据插入到数据库的方法(单行插入、批量插入,SQL Server、MySQL,insert into)
数据库·python·sql·mysql
银河系的一束光14 分钟前
mysql的下载和安装2025.4.8
数据库·mysql
Full Stack Developme22 分钟前
SQL 查询中使用 IN 导致性能问题的解决方法
数据库·sql
zheshiyangyang1 小时前
JavaScript---原型和原型链
开发语言·前端·javascript
pumpkin845141 小时前
理解 Rust 中的 String 分配机制
开发语言·rust
小宁学技术1 小时前
MATLAB在工程领域的实际应用案例
开发语言·matlab·matlab实际应用案例·matlab应用案例·matlab 实际应用案例
神经星星1 小时前
【vLLM 学习】API 客户端
数据库·人工智能·机器学习