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

相关推荐
lsx2024069 小时前
Java 对象概述
开发语言
范纹杉想快点毕业10 小时前
从单片机基础到程序框架:构建嵌入式系统的完整路径
数据库·mongodb
Mr_Xuhhh10 小时前
C++11实现线程池
开发语言·c++·算法
数据知道10 小时前
PostgreSQL性能优化:如何定期清理无用索引以释放磁盘空间(索引膨胀监控)
数据库·postgresql·性能优化
喵叔哟10 小时前
67.【.NET8 实战--孢子记账--从单体到微服务--转向微服务】--新增功能--分摊功能总体设计与业务流程
数据库·微服务·架构
tryCbest10 小时前
Oracle查看存储过程
数据库·oracle
无水先生10 小时前
python函数的参数管理(01)*args和**kwargs
开发语言·python
py小王子10 小时前
dy评论数据爬取实战:基于DrissionPage的自动化采集方案
大数据·开发语言·python·毕业设计
咩咩不吃草10 小时前
【MySQL】表和列、增删改查语句及数据类型约束详解
数据库·mysql·语法
不懒不懒10 小时前
【MySQL 实战:从零搭建规范用户表(含完整 SQL 与避坑指南)】
数据库