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

关于QMenuBar创建方式的讨论

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

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

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

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

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

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

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

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

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

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

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

相关推荐
开心工作室_kaic1 小时前
基于Vue的兴趣活动推荐APP的设计与实现_kaic
java·c语言·开发语言·数据库·python·sqlite·php
完球了1 小时前
【Day14-单例设计模式&动态代理】
java·开发语言·笔记·学习·设计模式·学习经验
.昭阳.1 小时前
小程序——生命周期
java·开发语言·前端·小程序
Ajiang28247353044 小时前
贪吃蛇项目实现(C语言)——附源码
c语言·开发语言
guicai_guojia4 小时前
面试题篇: 跨域问题如何处理(Java和Nginx处理方式)
java·开发语言·nginx
鼠鼠龙年发大财5 小时前
fly专享
开发语言·php
hunandede5 小时前
直播相关02-录制麦克风声音,QT 信号与槽,自定义信号和槽
开发语言·qt
lzb_kkk5 小时前
【Redis】redis5种数据类型(哈希)
开发语言·redis·算法·缓存·哈希算法
Good_tea_h6 小时前
如何实现Java中的多态性
java·开发语言·python
格林威7 小时前
Baumer工业相机堡盟工业相机如何通过BGAPISDK使用短曝光功能(曝光可设置1微秒)(C语言)
c语言·开发语言·人工智能·数码相机·计算机视觉