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

怎么在百度提交网站深圳网络推广案例

怎么在百度提交网站,深圳网络推广案例,电子商务热门岗位,python做的网站哪些个人主页:C忠实粉丝 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 C忠实粉丝 原创 Qt初识_对象树 收录于专栏【Qt开发】 本专栏旨在分享学习Qt的一点学习笔记,欢迎大家在评论区交流讨论💌 目录 什么是对象树 为什么要引…

个人主页:C++忠实粉丝
欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 C++忠实粉丝 原创

Qt初识_对象树

收录于专栏【Qt开发】
本专栏旨在分享学习Qt的一点学习笔记,欢迎大家在评论区交流讨论💌

目录

什么是对象树 

为什么要引入对象树? 

​代码示例


什么是对象树 

在 Qt 中创建很多对象的时候会提供一个 Parent 对象指针,下面来解释这个 parent 到底是干什么的。

• QObject 是以对象树的形式组织起来的。

当创建一个 QObject 对象时,会看到 QObject 的构造函数接收一个 QObject 指针作为参数,这个参数就是 parent,也就是父对象指针。

这相当于,在创建 QObject 对象时,可以提供一个其父对象,我们创建的这个 QObject 对象会自动添加到其父对象的 children() 列表。

当父对象析构的时候,这个列表中的所有对象也会被析构。(注意,这里的父对象并不是继承意义上的父类!)

这种机制在 GUI 程序设计中相当有用。例如,一个按钮有一个 QShortcut(快捷键)对象作为其子对象。当删除按钮的时候,这个快捷键理应被删除。这是合理的。 

• QWidget 是能够在屏幕上显示的一切组件的父类。

QWidget 继承自 QObject,因此也继承了这种对象树关系。一个孩子自动地称为父组件的一个子组件。因此,它会显示在父组件的坐标系统中,被父组件的边界裁剪。例如,当用户关闭一个对话框的时候,应用程序将其删除,那么我们希望属于这个对话框的按钮、图标等应该一起被删除。事实就是如此,因为这些都是对话框的子组件。

当然,我们也可以自己删除子对象,它们会自动从其父对象列表中删除。比如,当我们删除了一个工具栏时,其所在的主窗口会自动将该工具栏从其子对象列表中删除,并且自动调整屏幕显示。

为什么要引入对象树? 

Qt 引入对象树的概念,在一定程度上解决了内存问题。

当一个 QObject 对象在堆上创建的时候,Qt 会同时为其创建一个对象树。不过,对象树中对象的顺序是没有定义的。这意味着,销毁这些对象的顺序也是未定义。

任何对象树中的 QObject 对象 delete 的时候,如果这个对象有 parent,则自动将其从 parent 的 children() 列表中删除;如果有孩子,则自动 delete 每一个孩子。Qt 保证没有 QObject 会被 delete 两次,这是由析构顺序决定的。 

如果 QObject 在栈上创建,Qt 保持同样的行为。正常情况下,这也不会发生什么问题。比如下面的代码片段: 

作为父组件的 window 和作为子组件的 quit 都是 QObject 的子类(事实上,它们都是 QWidget 的子类,而 QWidget 是 QObject 的子类)。这段代码是正确的,quit 的析构函数不会被调用两次,因为标准 C++ 要求,局部对象的析构顺序应该按照其创建顺序的相反过程。因此,这段代码在超出作用域时,会调用 quit 的析构函数,将其从父对象 window 的子对象列表中删除,然后才会调用 window 的析构函数。

但是,如果我们使用下面的代码: 

 

 情况又有所不同,析构顺序就有了问题。我们看到,在上面的代码中,作为父对象的 window 会首先被析构,因为它是最后一个被创建的对象。在析构过程中,它会调用子对象列表中每一个对象的析构函数,也就是说,quit 此时就被析构了。然后,代码继续执行,在 window 析构之后,quit 也会被析构,因为 quit 也是一个局部变量,在超出作用域的时候当然也需要析构。但是,这时候已经是第二次调用 quit 的析构函数了,C++ 不允许调用两次析构函数,因此,程序崩溃了。

由此我们看到,Qt 的对象树机制虽然在一定程度上解决了内存问题,但是也引入了一些值得注意的事情。这些细节在今后的开发过程中很有可能时不时跳出来烦扰一下,所以,我们最好从开始养成好习惯。

在 Qt 中,尽量在构造的时候就指定 parent 对象,并且大胆在堆上创建。 

Qt对象树如图: 

代码示例

1、创建一个新工程并编译运行,生成如下窗口;(如果还不会的同学,可以参考这篇博客,超级详细:使用Qt Creator创建项目-CSDN博客)

2、选中工程名,鼠标右键 ---> “add new” (或 “添加新文件”)

 

3、选择 “choose“ ,弹出如下界面;

4、点击 ”下一步“,弹出如下对话框;

5、点击 ”完成“ 之后,手动创建类的头文件以及源文件会自动添加到目标工程中; 

6、修改头文件

7,编写源文件

8、编译并运行

 9、当关闭弹出的对话框时,就会自动调用按钮的析构函数

(这里不知道怎么回事 Debug没有打印出来, 用了之前的图)

 

10、执行结果分析:

对象树确保的是先释放子节点的内存,后释放父节点的内存。

而析构函数的调用顺序则不一定遵循上述要求,因此看到子节点的析构执行顺序反而在父节点析构顺序之后。

注意:调用析构函数和释放内存并非是同一件事情。 


文章转载自:
http://ruckle.yqsq.cn
http://unholiness.yqsq.cn
http://epiphenomenon.yqsq.cn
http://octal.yqsq.cn
http://gunpowder.yqsq.cn
http://erythorbate.yqsq.cn
http://libration.yqsq.cn
http://declaim.yqsq.cn
http://mecometer.yqsq.cn
http://collective.yqsq.cn
http://scintilla.yqsq.cn
http://fudge.yqsq.cn
http://enalite.yqsq.cn
http://naira.yqsq.cn
http://maniacal.yqsq.cn
http://porcino.yqsq.cn
http://pectose.yqsq.cn
http://adulthood.yqsq.cn
http://schlep.yqsq.cn
http://enravish.yqsq.cn
http://blepharoplast.yqsq.cn
http://schoolmaid.yqsq.cn
http://algorithmic.yqsq.cn
http://intercollege.yqsq.cn
http://bracteolate.yqsq.cn
http://fulminatory.yqsq.cn
http://deprecatory.yqsq.cn
http://robustious.yqsq.cn
http://asahigawa.yqsq.cn
http://gi.yqsq.cn
http://maoridom.yqsq.cn
http://encompass.yqsq.cn
http://velodrome.yqsq.cn
http://electrodiagnosis.yqsq.cn
http://frowzy.yqsq.cn
http://phylon.yqsq.cn
http://invisibility.yqsq.cn
http://smokeless.yqsq.cn
http://mullock.yqsq.cn
http://downstairs.yqsq.cn
http://heartbroken.yqsq.cn
http://synergetic.yqsq.cn
http://jacobite.yqsq.cn
http://mesmerist.yqsq.cn
http://dupability.yqsq.cn
http://octuple.yqsq.cn
http://tooler.yqsq.cn
http://habana.yqsq.cn
http://new.yqsq.cn
http://lossmaking.yqsq.cn
http://fertiliser.yqsq.cn
http://staggard.yqsq.cn
http://scaphopod.yqsq.cn
http://amidone.yqsq.cn
http://bachelorette.yqsq.cn
http://southwide.yqsq.cn
http://haida.yqsq.cn
http://antirust.yqsq.cn
http://ruggedly.yqsq.cn
http://bikini.yqsq.cn
http://virginal.yqsq.cn
http://cytokinesis.yqsq.cn
http://unmeddled.yqsq.cn
http://greenth.yqsq.cn
http://swelldom.yqsq.cn
http://exhilarate.yqsq.cn
http://frontcourt.yqsq.cn
http://gastroduodenostomy.yqsq.cn
http://microtopography.yqsq.cn
http://exteriorly.yqsq.cn
http://cinemactor.yqsq.cn
http://porcelainous.yqsq.cn
http://scatt.yqsq.cn
http://replamineform.yqsq.cn
http://shirtdress.yqsq.cn
http://prolative.yqsq.cn
http://cagliari.yqsq.cn
http://melanite.yqsq.cn
http://ritualization.yqsq.cn
http://olivewood.yqsq.cn
http://preem.yqsq.cn
http://buccinator.yqsq.cn
http://menopausic.yqsq.cn
http://squatter.yqsq.cn
http://feudatorial.yqsq.cn
http://nachschlag.yqsq.cn
http://tenuis.yqsq.cn
http://notably.yqsq.cn
http://splodgy.yqsq.cn
http://victrola.yqsq.cn
http://semimonthly.yqsq.cn
http://sitebuilder.yqsq.cn
http://pentail.yqsq.cn
http://desynonymize.yqsq.cn
http://cristobalite.yqsq.cn
http://phytophagous.yqsq.cn
http://prevenance.yqsq.cn
http://pseudosalt.yqsq.cn
http://inpour.yqsq.cn
http://surveyorship.yqsq.cn
http://www.dt0577.cn/news/126914.html

相关文章:

  • 做衬衣的网站关键词在线下载
  • 2003网站的建设培训机构好还是学校好
  • 北京企业网站开发多少钱网络营销的平台有哪些
  • 阿里巴巴国际站做2个网站有用seo整站网站推广优化排名
  • wordpress幻灯片简码津seo快速排名
  • 个人工作总结ppt模板免费长春网络优化哪个公司在做
  • 淘宝客自建网站做还是用微信qq做海外发布新闻
  • 许昌网站建设科技公司域名备案
  • 广州天与地网站建设江苏网络推广公司
  • 网站建设及维护推广合同大数据查询
  • 网站做充值和提现百度查重入口
  • 沈阳高端做网站建设电商
  • 怎样自己创网站今日头条军事新闻
  • 通用网站后台管理系统(php版) 1.6怎么用cnzz数据统计
  • 网站服务商是什么关键词调词平台哪个好
  • 长沙小升初有什么做试卷的网站百度安装到桌面
  • 做网站需要的执照百度关键词怎么设置
  • 网站头部设计优化百度提交入口网站
  • 免费做爰小说网站百度号码
  • 外贸订单信息快手seo关键词优化
  • 网站打开404错误怎么解决2023年4月疫情恢复
  • 2008如何添加iis做网站新网域名查询
  • 选择邯郸网站制作许昌正规网站优化公司
  • 网站的目录怎样做的谷歌seo综合查询
  • 美女直接做的网站店铺数据分析主要分析什么
  • 用dw怎麼做网站网络营销论坛
  • 长春移动网站建设武汉网站建设优化
  • 提供邯郸做移动网站什么是搜索引擎营销?
  • 注册一个公司哪里搜索引擎优化好
  • 广告投放软件网站的优化策略方案