首页 > 其他分享 >Qt对象树机制

Qt对象树机制

时间:2023-01-16 22:24:22浏览次数:37  
标签:管理器 Qt 对象 布局 部件 析构 机制 父类

正常来讲,使用指针来指向一个new的对象的时候,需要自己手动delete这个指针,来释放空间。delete对象指针时,会自动调用此对象的析构函数。

 

对此很不方便(手动delete),在Qt中用了对象树机制:

每个继承自QObject类的对象通过它的对象链表(QObjectList)来管理子类对象,当用户创建一个子对象时,其对象链表相应更新子类对象信息,对象链表可通过children()获取。

当父对象析构的时候,其对象链表中的所有(子)对象也会被析构,父对象会自动将其从父对象列表中删除。

 

学习过程中有三点总结:

1.普通部件的父亲不能是布局管理器,若布局管理器对部件进行布局时,布局管理器的父类(不能是布局管理器)会作部件的父类,当有其他对象调用此布局时,会重新改变布局管理器与部件的父类。(正常,无提示信息)

 布局管理器的父类可以是布局管理器,当由对象调用时,布局管理器的父类还是布局管理器。当被其他对象调用时,布局管理器的父类还是布局管理器,它的部件父类是其他对象。

(正常,无提示信息)

 

2.一个窗口中的按钮被点击时,它的子窗口弹出的情况下,子窗口的部件的父类就是子窗口,父子关系向树一样有层级。

 

3.我们自定义一个继承自QObject的类时,析构函数可以不写的原因是:当此类用于主窗口时,直接用类名定义一个变量,当程序结束时,自动析构。问题是此类的对象调用的析构函数是合成的,

若是其中有new的部件对象该当如何?解释是,这些部件都要指定主窗口为父类,当父类对象析构的时候,子类对象由于对象树机制,也会跟着析构。同样的,若此类采取new形式定义,可以让此类

指定父窗口。

标签:管理器,Qt,对象,布局,部件,析构,机制,父类
From: https://www.cnblogs.com/ylww/p/17056422.html

相关文章

  • 手写笔记1:JVM “对象是生存还是死亡”
    ......
  • 关于现代浏览器的 back-and-forward 缓存机制
    setUpLocationChangeListener:设置位置更改侦听器。这个侦听器检测从路由器外部触发的导航(例如,浏览器后退/前进按钮)并安排相应的路由器导航,以便触发正确的guardevent.An......
  • [JavaScript]前端解析cookie为对象
    参考解析页面传参varcookie_str=document.cookievarcookie_arr=cookie_str.split(";")varcookie_obj={}for(vari=0;......
  • 记录Qt Creator 更改默认构建目录到工程目录下
     QtCreator更改默认构建目录到工程目录下_静世孔明的博客-CSDN博客 QtCreator修改调试文件夹debug生成路径_黑黑black的博客-CSDN博客_qt如何更改debug文件目录......
  • QTwin10/11上打包的qt程序放到win7上打不开的解决方法
    在win11上编写并打包发布了qt5.15.1msvc201964bit的qt程序,在其他win10电脑上都能正常运行,但是放到win7电脑上,运行exe时依次出现缺少“msvcp140”、“api-ms-win-crt-r......
  • QT程序打包发布
    记录今天第一次打包发布程序参考的博客参考: Qt程序打包发布方法(使用官方提供的windeployqt工具)_iw1210的博客-CSDN博客_qt发布程序QT之程序打包发布-知乎(zhihu.com......
  • QT获取文件路径&保存文件&选择文件夹
    获取文件路径QStringfile_path=QFileDialog::getOpenFileName(this,tr("文件对话框标题"),".../","txtfiles(*.txt)");//返回用户选择的现有文件路径,如果用户按了"......
  • QT保存(图像/字符)数据到本地为文件
    功能一可以保存图像数据到本地为JPG/PNG格式;并且文件名为日期时间。函数实现boolsave_image(QImageimageData,QStringcurTime,QStringsavePath){//图片保......
  • 【ES6】Promise对象详解
    【ES6】Promise对象详解​​一、Promise对象的含义​​​​二、Promise对象的用法​​​​三、Promise对象的几个应用【重点】​​​​1、时间延迟函数​​​​2、图片异步......
  • 【ES6】Proxy对象
    【ES6】Proxy对象​​一、Proxy的基本用法​​​​二、Proxy示例的方法​​​​1)get()​​​​2)set()​​​​3)apply()​​​​查看更多ES6教学文章:​​​​参考文献​​引......