【Qt】关于QMenuBar创建方式的讨论

关于QMenuBar创建方式的讨论

如果在创建项目的时候,没有勾选自动生成ui文件,此时上述代码是正确的;而如果勾选了自动生成ui文件,上述代码则会出现内存泄漏的问题。因为Qt已经生成了一个QMenuBar了

由于之前程序已经自己创建好了一个QMenuBar,当设置新的QMenuBar的时候,就会导致就的QMenuBar脱离了Qt的对象树,也就意味着后续无法对这个对象进行释放了。

关于上述程序,如果窗口关闭,对象树释放,此时进程也就结束了,而进程结束后,自然所有的内存都会回收给系统,上述内存泄漏所造成的影响也不是特别大;而如果这样的程序出现在一个多窗口的程序中,如果涉及到窗口的频繁调整切换(窗口的频繁创建与销毁),上述内存泄漏就会更加严重一些。

关于这个问题,现阶段计算机内存比较充裕,上述内存泄漏问题也不会特别严重。

如果是服务器程序相比于客户端程序,就对内存泄漏问题比较严重:

(1)服务器需要处理很多请求,每个请求泄漏一点,请求积累下来就会泄漏很多。

(2)服务器需要7*24小时运行。

当然,即使如此,还是希望代码更加规范一些。

使用这样的方式,相当于进行了俩次操作:

  1. 如果QMenuBar已经存在,直接获取并返回
  2. 如果QMenuBar不存在,就先创建一个新的,再返回。

如果是获取到已经存在的QmenuBar,这里的设置就是自己替换自己。

相关推荐
mit6.8241 小时前
并查集|栈
c++
Android小码家1 小时前
Vscode + docker + qt 网络监听小工具
vscode·qt·docker
中国胖子风清扬1 小时前
Rust 序列化技术全解析:从基础到实战
开发语言·c++·spring boot·vscode·后端·中间件·rust
我就是全世界1 小时前
【存储选型终极指南】RustFS vs MinIO:5大维度深度对决,95%技术团队的选择秘密!
开发语言·分布式·rust·存储
yudiandian20142 小时前
【QT 5.12.12 打包-Windows 平台下】
开发语言·qt
要记得喝水2 小时前
C#某公司面试题(含题目和解析)--1
开发语言·windows·面试·c#·.net
金融数据出海2 小时前
黄金金融期货数据API对接技术文档
开发语言·金融·github
诗书画唱2 小时前
【前端教程】JavaScript 实现图片鼠标悬停切换效果与==和=的区别
开发语言·前端·javascript