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

关于QMenuBar创建方式的讨论

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

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

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

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

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

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

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

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

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

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

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

相关推荐
轻口味19 分钟前
命名空间与模块化概述
开发语言·前端·javascript
晓纪同学1 小时前
QT-简单视觉框架代码
开发语言·qt
威桑1 小时前
Qt SizePolicy详解:minimum 与 minimumExpanding 的区别
开发语言·qt·扩张策略
飞飞-躺着更舒服1 小时前
【QT】实现电子飞行显示器(简易版)
开发语言·qt
fyzy1 小时前
Qt获取本地计算的CPU温度
qt
cbdg37571 小时前
Qt 6 QML Settings location 不创建指定路径文件
qt
了一li1 小时前
Qt中的QProcess与Boost.Interprocess:实现多进程编程
服务器·数据库·qt
杨德杰1 小时前
QT网络(一):主机信息查询
网络·qt
明月看潮生1 小时前
青少年编程与数学 02-004 Go语言Web编程 16课题、并发编程
开发语言·青少年编程·并发编程·编程与数学·goweb
明月看潮生1 小时前
青少年编程与数学 02-004 Go语言Web编程 17课题、静态文件
开发语言·青少年编程·编程与数学·goweb