Qt 窗口可见性 之 close函数和hide函数

close函数

基本功能

        close() 方法的主要功能是关闭窗口,并触发一系列与关闭相关的事件和信号。调用此方法后,窗口将不再可见,但窗口对象本身仍然存在,并且可以被再次显示(通过调用 show() 方法)。

事件处理
  • QCloseEvent:在调用 close() 方法时,Qt 会向窗口发送一个 QCloseEvent 事件。这个事件提供了一个机会,让开发者在窗口关闭之前执行一些清理工作或确认操作。
  • 事件处理函数:开发者可以通过重写 QWidget 类的 closeEvent(QCloseEvent *event) 方法来捕获并处理这个事件。在这个方法中,你可以决定是否接受关闭事件(即是否允许窗口关闭)。
void FormChild::closeEvent(QCloseEvent *event)
{
    qDebug() << "do closeEvent";
    //若不希望子窗口被关闭,则忽略
    event->ignore();
    //默认允许窗口关闭,有无此语句都可以
    //event->accept();
}
资源释放

        默认情况下,调用 close() 方法并不会立即释放窗口对象的资源。窗口对象仍然存在于内存中,并且可以通过调用 show() 方法再次显示。如果你希望窗口在关闭时立即被销毁并释放资源,你可以使用以下方法之一:

  • 设置属性:通过调用 setAttribute(Qt::WA_DeleteOnClose, true) 方法,你可以设置窗口在关闭时自动删除自己。这样,当窗口关闭时,Qt 会自动调用 deleteLater() 方法来销毁窗口对象。
  • 手动删除:另一种方法是手动删除窗口对象。这通常在你确定窗口不再需要时进行。你可以通过调用 delete 操作符来销毁窗口对象(但请注意,这样做之前需要确保没有其他指针指向该对象,以避免悬挂指针问题)。

hide函数

功能描述
  • 隐藏窗口:调用hide()函数会使窗口或小部件变得不可见。
  • 保留资源:虽然窗口被隐藏,但它仍然存在于内存中,并且其所有资源和状态(如大小、位置、内容等)都被保留。
  • 事件处理:隐藏后的窗口不会接收鼠标或键盘事件,但仍然可以接收某些特定的事件,如定时器事件。
使用场景
  • 临时隐藏:在某些情况下,你可能需要暂时隐藏一个窗口,然后在需要时再次显示它。例如,在显示一个弹出菜单时隐藏主窗口。
  • 资源管理:隐藏窗口而不是销毁它可以节省资源,因为重新创建一个窗口可能比显示一个已经存在的窗口要耗费更多的资源。

区别

功能不同
  • close():这个函数不仅隐藏窗口,还会触发一系列关闭事件。默认情况下,它会向窗口发送一个QCloseEvent事件,如果窗口接受了这个事件,close()函数会进一步隐藏窗口。此外,如果窗口设置了Qt::WA_DeleteOnClose属性,close()还会在隐藏窗口后删除它,释放其占用的资源。
  • hide():这个函数仅用于隐藏窗口,不会触发关闭事件,也不会删除窗口。隐藏后的窗口仍然存在于内存中,可以随时通过show()函数重新显示。
事件处理
  • 当调用close()时,窗口有机会通过重新实现closeEvent()函数来处理关闭事件,决定是否真的要关闭窗口。
  • hide()则不会触发任何事件,它只是简单地将窗口设置为不可见(并不是最小化)

资源释放

  • 如果窗口设置了Qt::WA_DeleteOnClose属性,并且调用了close()函数,那么窗口及其子对象将被删除,释放其占用的资源。
  • hide()不会释放任何资源,它只是将窗口隐藏起来。

联系

  • 隐藏效果:无论是close()还是hide(),它们都会使窗口变得不可见。然而,如前所述,close()在隐藏窗口后可能还会执行其他操作(如删除窗口)。
  • 调用关系:在Qt的源码中,close()函数在隐藏窗口时实际上调用了hide()函数。因此,从某种程度上说,close()在隐藏窗口方面的行为是依赖于hide()的。

使用场景

  • close():当你想要关闭一个窗口并释放其占用的资源时,应该使用close()函数。特别是当窗口设置了Qt::WA_DeleteOnClose属性时,close()会确保窗口被正确删除。
  • hide():当你只是想要暂时隐藏一个窗口,但保留其状态和资源以便稍后再次显示时,应该使用hide()函数。

代码案例: Qt 窗口可见性 之 工程案例-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/899554.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

开放式耳机哪个品牌音质好?高评分爆款开放式耳机推荐!

一直活跃在蓝牙耳机圈子里的我&#xff0c;对各种类型的耳机多少都有自己的看法&#xff0c;完全可以说是个耳机狂热者。近几年&#xff0c;开放式蓝牙耳机愈发火爆。开放式耳机不是任何品牌都能轻松做好的产品&#xff0c;特别是音质&#xff0c;它涵盖了核心单元技术等诸多方…

负载均衡服务器攻击怎么解决最有效?

负载均衡服务器攻击怎么解决最有效&#xff1f;常见的有效解决方法包括&#xff1a;使用SYNCookie机制、限制ICMP包速率、基于源IP的连接速率限制、检测并丢弃异常IP包、配置访问控制列表&#xff08;ACL&#xff09;、设置虚拟服务器/服务器连接数量限制、设置HTTP并发请求限制…

ABAQUS应用11——支座弹簧

文章目录 0、背景1、ABAQUS中几类弹簧的简介2、SPRING1的性质初探 0、背景 1、ABAQUS中几类弹簧的简介 先说参考来源&#xff0c;ABAQUS2016的帮助文档里第4卷&#xff0c;32.1.1节&#xff0c;有三种弹簧&#xff08;SPRING1 、SPRING2 以及SPRINGA&#xff09;。 三种弹簧里…

C for Graphic:视差渲染(一)

记录一下最近优化场景的做法&#xff1a;视差渲染 原理&#xff1a;通过视口坐标的变化&#xff0c;观察不同采样画面的功能&#xff0c;画面的载体为低模平面 我早期工作&#xff0c;在小作坊全栈的时候&#xff0c;做过一段时间web开发&#xff0c;做了一个古董藏…

【传知代码】机器学习在情绪预测中的应用(论文复现)

在科技迅猛发展的今天&#xff0c;我们不仅在追求更强大的计算能力和更高的精度&#xff0c;还希望我们的机器能够理解和回应我们复杂的情感世界。设想一下&#xff0c;当你面对挫折时&#xff0c;设备不仅能识别你的情绪&#xff0c;还能以一种富有同情心和洞察力的方式作出反…

开放式耳机哪个牌子好?开放式蓝牙耳机排行榜分享

​耳机已经成为我们日常生活中的必需品&#xff0c;但长时间佩戴传统入耳式耳机可能会导致耳朵不适&#xff0c;甚至影响健康。为了应对这一挑战&#xff0c;开放式耳机应运而生。这类耳机不侵入耳道&#xff0c;有效减轻了耳朵的压力&#xff0c;同时减少了感染风险&#xff0…

fmql之Linux中I2C总线框架

正点原子第44章 I2C zynq I2C pcf8563芯片 我们用的是ds3231. Linux I2C总线框架 I2C总线驱动 这部分内容是半导体厂商编写的。 I2C总线设备 zynq I2C适配器驱动 I2C设备驱动编写 使用设备树 代码编写 设备树修改 设备驱动编写 因为用的是ds3231&#xff0c;所以先找…

使用 PyTorch 构建 LSTM 股票价格预测模型

目录 引言准备工作1. 训练模型&#xff08;train.py&#xff09;2. 模型定义&#xff08;model.py&#xff09;3. 测试模型和可视化&#xff08;test.py&#xff09;使用说明模型调整结论 引言 在金融领域&#xff0c;股票价格预测是一个重要且具有挑战性的任务。随着深度学习…

1024软件推荐-rubick

开源的插件化桌面端效率工具箱。插件是基于 npm 进行安装和卸载&#xff0c;非常轻便。插件数据支持 webdav 多端同步&#xff0c;非常安全。支持内网部署&#xff0c;可二次定制化开发&#xff0c;非常灵活。 前言 rubick 之前的插件管理&#xff0c;依托于云服务器存储&…

滴水逆向三期笔记与作业——02C语言——13 指针(3)(4)

滴水逆向三期笔记与作业——02C语言——13 指针3、4 一、模拟实现CE的数据搜索功能 OneNote迁移 一、模拟实现CE的数据搜索功能 //其中有0xAA&#xff0c;超过有符号char范围&#xff0c;在vscode中会报错&#xff0c;所以使用unsigned char unsigned char data[100] {0x00,0…

一起搭WPF架构之完结总结篇

一起搭WPF架构之完结总结篇 前言设计总结设计介绍页面一页面二页面三 结束 前言 整体基于WPF架构&#xff0c;根据自己的需求简单设计与实现了衣橱的数据统计、增加与读取数据、并展示数据的小软件。我知道自己在设计方面还有很多不足&#xff0c;暂时先做到这里了&#xff0c…

gbase8s权限管理

一 权限分类 分片级权限&#xff08;分片表&#xff09; 表引用 类型级权限 例程级权限 语言级权限 序列级权限 等... 其中常用的为 数据库级权限&#xff0c;表级权限&#xff0c;序列级权限以及例程级权限 二 权限控制 当创建一个用户时&#xff0c;该用户没有任何权…

为了数清还有几天到周末,我用python绘制了日历

日历的秘密 昨天&#xff0c;在看小侄子写作业的时候&#xff0c;发现了一个秘密&#xff1a;他在“演算纸”&#xff08;计算数学题用的草纸&#xff09;上画了非常多的日历。对此我感到了非常的困惑&#xff0c;“这是做什么的&#xff1f;” 后来&#xff0c;经过了我不懈…

机器学习面试笔试知识点-线性回归、逻辑回归(Logistics Regression)和支持向量机(SVM)

机器学习面试笔试知识点-线性回归、逻辑回归Logistics Regression和支持向量机SVM 一、线性回归1.线性回归的假设函数2.线性回归的损失函数(Loss Function)两者区别3.简述岭回归与Lasso回归以及使用场景4.什么场景下用L1、L2正则化5.什么是ElasticNet回归6.ElasticNet回归的使…

【设计模式】MyBatis 与经典设计模式:从ORM到设计的智慧

作者&#xff1a;后端小肥肠 &#x1f347; 我写过的文章中的相关代码放到了gitee&#xff0c;地址&#xff1a;xfc-fdw-cloud: 公共解决方案 &#x1f34a; 有疑问可私信或评论区联系我。 &#x1f951; 创作不易未经允许严禁转载。 姊妹篇&#xff1a; 【设计模式】揭秘Spri…

计算机网络:数据链路层 —— 以太网(Ethernet)

文章目录 局域网局域网的主要特征 以太网以太网的发展100BASE-T 以太网物理层标准 吉比特以太网载波延伸物理层标准 10吉比特以太网汇聚层交换机物理层标准 40/100吉比特以太网传输媒体 局域网 局域网&#xff08;Local Area Network, LAN&#xff09;是一种计算机网络&#x…

GitLab-删除仓库分支(删除远程分支)

进入对应仓库选择对应的分支进行删除操作。

为什么学习使用数控加工中心吗?

现代制造业现代制造业对高精度、高效率的加工需求日益增长&#xff0c;数控加工中心作为核心设备&#xff0c;其操作和维护技能成为企业招聘的重要考量。企业需要能够熟练操作数控加工中心&#xff0c;并具备解决复杂加工问题的能力的人才。 学校通过系学习和实践&#xff0c;学…

不用编程,快速实现多台西门子PLC跟三菱PLC之间数据通讯

PLC通讯智能网关IGT-DSER模块支持汇川、西门子、三菱、欧姆龙、罗克韦尔AB、GE等各种品牌的PLC之间通讯&#xff0c;同时也支持PLC与Modbus协议的变频器、智能仪表等设备通讯。网关有多个网口、串口&#xff0c;也可选择WIFI无线通讯。PLC内无需编程开发&#xff0c;在智能网关…

基于SSM健身国际俱乐部系统的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;用户管理&#xff0c;场地类别管理&#xff0c;场地信息管理&#xff0c;运动项目管理&#xff0c;场地类型管理&#xff0c;项目类型管理 用户账号功能包括&#xff1a;系统首页&#xff0c;个人中心…