当前位置: 首页 > news >正文

Qt窗体自动销毁

Qt中通过对象树的方式,实现了窗体自动析构,只要我们使用得当,就能免去自己去释放窗体对象的内存,但是我们得清楚Qt窗体自动析构的机制,什么情况下能够自动析构,什么情况不能。操作不当的情况可能造成内存泄漏,甚至会出现程序崩溃问题。

下面通过一系列示例进行探究。

设置父窗体

这种情况规则最简单,在创建窗体或控件时,指定其parent对象,当parent对象销毁时,则会析构该窗体。

QComboBox* cbx=new QComboBox(this);//this窗体被析构时,cbx自动析构

Qt中如果一个widget创建时没有指定parent,但是被其他窗体设置为centerWidget()后
其他窗体析构时,该窗体能正常析构

MainWindow::MainWindow(QWidget *parent): QMainWindow(parent)
{MyWidget* w=new MyWidget();//MainWindow将成为w的父窗体this->setCentralWidget(w);
}
设置窗体关闭时自动销毁

Qt中如果一个widget没有指定parent,但设置setAttribute(Qt::WA_DeleteOnClose);
该窗口关闭时析构

MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);//w作为一个独立的窗体展示,点击关闭按钮后,窗体自动析构MyWidget* w=new MyWidget();w->show();w->setAttribute(Qt::WA_DeleteOnClose);
//    this->setCentralWidget(w);
}

Qt中如果一个widget没有指定parent,且没有设置setAttribute(Qt::WA_DeleteOnClose);
该窗口关闭时不会析构,主窗口关闭后,该窗口也不会析构

MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);//w作为一个独立的窗体展示,关闭后,并不会销毁MyWidget* w=new MyWidget();w->show();
}
放入父窗体的布局之中

如果一个控件在new时没有指定parent,但是放在了一个另窗体的布局中,该窗体关闭时
该控件将析构。将控件放入一个窗体的布局中时,将自动设置该窗体为控件的父窗体。
 

MyWidget::MyWidget(QWidget *parent) : QWidget(parent)
{MyLineEdit* edit=new MyLineEdit();//没有指定parentQVBoxLayout* layout=new QVBoxLayout();layout->addWidget(edit);//放在一个widget的布局中this->setLayout(layout);//当放入到当前窗体的布局中时,当前窗体将成为edit的父窗体
}
指定父窗体,又放入布局

Qt中,如果一个控件指定了widget1作为parent,但是又放在了widget2的布局中
在widget2被析构的时候,该控件将被析构
 

MyWidget::MyWidget(QWidget *parent) : QWidget(parent)
{MyLineEdit* edit=new MyLineEdit(parent);//指定widget1作为parentQVBoxLayout* layout=new QVBoxLayout();layout->addWidget(edit);//edit的实际parent已经更改为widget2( this, MyWidget*)this->setLayout(layout);
}

其他设置父窗体的场景
控件放入表格中

Qt中,将一个编辑框放置在一个表格中,当表格被析构的时候,编辑框也被析构

MyWidget::MyWidget(QWidget *parent) : QWidget(parent)
{MyLineEdit* edit=new MyLineEdit(parent);QTableWidget* table=new QTableWidget(this);table->setColumnCount(2);table->setRowCount(2);table->setCellWidget(0,0,edit);//表格table析构时,edit也被析构QVBoxLayout* layout=new QVBoxLayout();layout->addWidget(table);this->setLayout(layout);}

相关文章:

Qt窗体自动销毁

Qt中通过对象树的方式,实现了窗体自动析构,只要我们使用得当,就能免去自己去释放窗体对象的内存,但是我们得清楚Qt窗体自动析构的机制,什么情况下能够自动析构,什么情况不能。操作不当的情况可能造成内存泄…...

制造业企业设备管理常见的三个问题及对应的解决方案

当今的市场如同茫茫大海,既充满机遇,也伴随着波动的风险。在现代制造业中,企业常常面临着各种挑战,这些挑战可能妨碍其发展和竞争力。但制造企业往往具备能够解决挑战的能力,借助软件工具的力量,可以更好地…...

linux文件目录

/bin 二进制可执行命令。该目录下存放着普通用户的命令 /boot 启动Linux的核心文件 /data 用户用于存放日志等数据的目录 /dev 系统的设备文件,即设备的驱动程序 /etc 系统所有的配置文件都在这个目录中 /home 用户主目录的基点 /lib 存放着和…...

流量卡是什么?流量卡为什么有虚量,51物联卡带你全面了解一下。

上个月在网上买了一张流量卡,用了之后才发现剩余流量和套餐不符,这种流量是虚的吗?还有必要接着使用吗?这是一个网友跟小编私信咨询的一个问题。 ​ 其实流量卡流量和套餐不符,这个问题是比较常见的一个问题&#xff…...

浅谈电力物联网时代物联网技术在电力系统中的应用

贾丽丽 安科瑞电气股份有限公司 上海嘉定201801 摘要:在电力系统建设中,物联网的应用不仅促进了我国电力工业的发展,而且对我国的物联网技术也起到了一定的促进作用。随着物联网技术应用于电力系统,推动了中国工业的快速发展。因…...

HTTP 状态代码 (Winhttp.h)

文章目录 对开发者有什么帮助状态码产生要求WinHTTP状态码推荐阅读 Microsoft Windows HTTP Services (WinHTTP) 的用户应使用最新版本的技术版本 5.1。 版本 5.0 不再受支持。 对开发者有什么帮助 HTTP状态代码(HTTP status codes)是Web开发中的标准返…...

开槌在即:陈可之油画|《赞红梅》

《赞红梅》 尺寸:38x30cm 陈可之2020年绘 “墙角数枝梅,凌寒独自开。遥知不是雪,为有暗香来。”梅花,迎雪吐艳,严寒飘香,被视为坚忍不拔、自强不息等精神品质的象征物。文学艺术史上,有众多以“…...

C++内存分配 new 和 delete

在 C 语言中,可以用库函数 malloc() 来分配内存;在 C 中仍然可以这样做,但 C 还有更好的方法——new 运算符 语法 类型* 指针名 new 类型;//可以赋初值 类型* 指针名 new 类型(初值); 类型* 指针名 new 类型{初值};//连续空间 类型*…...

蓝桥云课--1014 第 1 场算法双周赛

2-数树数【算法赛】&#xff08;找规律&#xff09; 一、题目要求 二、思路 由此可以推导出来&#xff0c;当s[i]L时&#xff0c;下一个编号当前编号*2-1&#xff1b;当s[i]R时&#xff0c;下一个编号当前编号*2&#xff1b; 三、代码 #include<bits/stdc.h> #define…...

管理类联考——写作——技巧篇——书写标点符号使用要求规范文档

写作答题卡书写标点符号使用要求规范文档 常用标点符号有逗号、句号、叹号、问号等 11 种&#xff0c;下面一一列举其用法和书写规范。 一、句号 用法&#xff1a;用于陈述句的末尾。 占格情况&#xff1a;占一格&#xff0c;写在格子左下方。 举例&#xff1a; 我看见妈妈走…...

快速解决mfc140u.dll丢失问题,找不到mfc140u.dll修复方法分享

在计算机使用过程中&#xff0c;我们可能会遇到各种问题&#xff0c;其中之一就是某些dll文件丢失。最近&#xff0c;我就遇到了一个关于mfc140u.dll丢失的问题。mfc140u.dll是Microsoft Foundation Class&#xff08;MFC&#xff09;库中的一个动态链接库文件&#xff0c;它包…...

福建地区等保测评怎么做

福建地区等保测评怎么做&#xff1f;福建地区等保测评是指在福建地区对网络安全等级保护进行评估的过程。网络安全已经成为现代社会一个重要的议题&#xff0c;各个行业和领域都面临着越来越多的网络安全风险和威胁。为了保护信息系统的安全性和可靠性&#xff0c;各地区都制定…...

mysql数据库的备份和恢复

目录 一、备份和恢复 1、备份&#xff1a; 2、备份的方法&#xff1a; 2.1物理备份&#xff1a; 2.2、逻辑备份 2.3增量备份&#xff1a; 一、备份和恢复 1、备份&#xff1a; 先备份再恢复 备份&#xff1a;完全备份&#xff0c;增量备份 完全备份&#xff1a;将整个…...

动态IP和静态IP哪个安全,该怎么选择

随着互联网的普及&#xff0c;越来越多的人开始关注网络安全问题。其中&#xff0c;IP地址作为网络通信中的重要组成部分&#xff0c;也成为了人们关注的焦点。 在IP地址中&#xff0c;动态IP和静态IP是两种不同的分配方式&#xff0c;它们各自具有不同的特点&#xff0c;那么…...

linux复习笔记03(小滴课堂)

find命令&#xff1a; d查找目录&#xff1a; 按照文件权限查找&#xff1a; 600全部权限&#xff1a; -user根据所属主&#xff1a; 上面的例子是找出文件并打印有多少行。 我们也可以把我们查询到的结果复制到其它文件位置中去&#xff1a; 复制成功。 -mtime根据修改时间…...

webgoat-Broken Access ControlI 访问控制失效

Insecure Direct Object References 直接对象引用 直接对象引用是指应用程序使用客户端提供的输入来访问数据和对象。 例子 使用 GET 方法的直接对象引用示例可能如下所示 https://some.company.tld/dor?id12345 https://some.company.tld/images?img12345 https://some.…...

Beaustiful Soup爬虫案例

文章目录 1 第三方库2 爬取2.1 初始化函数2.2 结束时关闭数据库2.3 生成header2.4 获取请求body2.5 解析异步json数据2.6 使用BS4的find方法解析2.7 写入口函数2.8 调用 3 完整代码 1 第三方库 获取随机UA pip install fake-useragent连接数据库 $ pip3 install PyMySQL发起…...

【Redis】Redis与SSM整合Redis注解式缓存Redis解决缓存问题

一&#xff0c;Redis与ssm整合 1.1 pom.xml配置 在pom.xml中配置相关的redis文件 redis文件&#xff1a; <redis.version>2.9.0</redis.version> <redis.spring.version>1.7.1.RELEASE</redis.spring.version><dependency><groupId>red…...

谈一谈SQLite、MySQL、PostgreSQL三大数据库

每一份付出&#xff0c;必将有一份收货&#xff0c;就像这个小小的果实&#xff0c;时间到了&#xff0c;也就会开花结果… 三大数据库概述 SQLite、MySQL 和 PostgreSQL 都是流行的关系型数据库管理系统&#xff08;RDBMS&#xff09;&#xff0c;但它们在功能、适用场景和性…...

【微软技术栈】C#.NET 中的本地化

本文内容 资源文件注册本地化服务使用 IStringLocalizer<T> 和 IStringLocalizerFactory将其放在一起 本地化是针对应用支持的每个区域性&#xff0c;将应用资源转换为本地化版本的过程。 只有在完成本地化评审步骤&#xff0c;以验证全球化应用是否做好本地化准备后&a…...

工程地质软件市场:发展现状、趋势与策略建议

一、引言 在工程建设领域&#xff0c;准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具&#xff0c;正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...

MODBUS TCP转CANopen 技术赋能高效协同作业

在现代工业自动化领域&#xff0c;MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步&#xff0c;这两种通讯协议也正在被逐步融合&#xff0c;形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...

Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)

引言&#xff1a;为什么 Eureka 依然是存量系统的核心&#xff1f; 尽管 Nacos 等新注册中心崛起&#xff0c;但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制&#xff0c;是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...

数据库分批入库

今天在工作中&#xff0c;遇到一个问题&#xff0c;就是分批查询的时候&#xff0c;由于批次过大导致出现了一些问题&#xff0c;一下是问题描述和解决方案&#xff1a; 示例&#xff1a; // 假设已有数据列表 dataList 和 PreparedStatement pstmt int batchSize 1000; // …...

select、poll、epoll 与 Reactor 模式

在高并发网络编程领域&#xff0c;高效处理大量连接和 I/O 事件是系统性能的关键。select、poll、epoll 作为 I/O 多路复用技术的代表&#xff0c;以及基于它们实现的 Reactor 模式&#xff0c;为开发者提供了强大的工具。本文将深入探讨这些技术的底层原理、优缺点。​ 一、I…...

Map相关知识

数据结构 二叉树 二叉树&#xff0c;顾名思义&#xff0c;每个节点最多有两个“叉”&#xff0c;也就是两个子节点&#xff0c;分别是左子 节点和右子节点。不过&#xff0c;二叉树并不要求每个节点都有两个子节点&#xff0c;有的节点只 有左子节点&#xff0c;有的节点只有…...

如何在网页里填写 PDF 表格?

有时候&#xff0c;你可能希望用户能在你的网站上填写 PDF 表单。然而&#xff0c;这件事并不简单&#xff0c;因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件&#xff0c;但原生并不支持编辑或填写它们。更糟的是&#xff0c;如果你想收集表单数据&#xff…...

MySQL JOIN 表过多的优化思路

当 MySQL 查询涉及大量表 JOIN 时&#xff0c;性能会显著下降。以下是优化思路和简易实现方法&#xff1a; 一、核心优化思路 减少 JOIN 数量 数据冗余&#xff1a;添加必要的冗余字段&#xff08;如订单表直接存储用户名&#xff09;合并表&#xff1a;将频繁关联的小表合并成…...

GitHub 趋势日报 (2025年06月06日)

&#x1f4ca; 由 TrendForge 系统生成 | &#x1f310; https://trendforge.devlive.org/ &#x1f310; 本日报中的项目描述已自动翻译为中文 &#x1f4c8; 今日获星趋势图 今日获星趋势图 590 cognee 551 onlook 399 project-based-learning 348 build-your-own-x 320 ne…...

【Linux系统】Linux环境变量:系统配置的隐形指挥官

。# Linux系列 文章目录 前言一、环境变量的概念二、常见的环境变量三、环境变量特点及其相关指令3.1 环境变量的全局性3.2、环境变量的生命周期 四、环境变量的组织方式五、C语言对环境变量的操作5.1 设置环境变量&#xff1a;setenv5.2 删除环境变量:unsetenv5.3 遍历所有环境…...