Qt学习记录(4)——对象树

本文详细介绍了Qt中对象树的构造和析构过程。从对象树的概念出发,阐述了如何从上至下构造对象树,以及从下至上进行析构。通过实例展示了如何添加文件、配置文件来构建对象树,并在myWidget类中添加MyButton对象。在析构部分,解释了Qt的自动内存管理机制,即父对象析构时会销毁其子对象。
摘要由CSDN通过智能技术生成

一、什么是对象树

在这里插入图片描述就相当在一个树上不断的生长新的枝丫。
构造: 就是从上往下,从树根(QObject)往下构造。
析构: 就是从下网上,从构造的对象往树根上析构。

二、如何去构造一个对象树

2.1、添加文件

在这里插入图片描述在这里插入图片描述等你添加好了过后,系统这边自动就会帮你生成一些文件。
在这里插入图片描述
在这里插入图片描述

2.2、配置文件

(1)修改头文件
MyButton.h
这是系统生成的,我们现是自己创建了一myButton,刚才是创了一个myWidget,所以我们再这里直接把myWidget换成myButton就好了。因为现在MyButton是一个QObject的子类而不是QWidget的子类,所以记得换头文件。

#ifndef MYBUTTON_H
#define MYBUTTON_H

#include <QPushButton> 		//换头文件,#include <QWidget>

class MyButton : public QPushButton
{
    Q_OBJECT
public:
    explicit MyButton(QWidget *parent = 0);
    ~MyButton();
public slots:
};

#endif // MYBUTTON_H

(2)配置mybutton.cpp文件

#include "mybutton.h"
#include <QDebug>

MyButton::MyButton(QWidget *parent) : QPushButton(parent)
{

}
MyButton::~MyButton()
{
    qDebug() << "MyButton的析构调";
}

同样的道理,这里把myWidget换成myButton就好了。因为后面加了一个打印qDebug,所以这里要加一个头文件#include 。

#include "mywidget.h"
#include <QPushbutton>
#include "mybutton.h"
#include <QDebug>

myWidget::myWidget(QWidget *parent)
    : QWidget(parent)
{
    //定一个按钮           //本来没有嘛,我们直接new一个
    QPushButton  *btn = new QPushButton;
    //通过show显示
    //btn -> show();
    //让对象依赖在我的窗口上
    btn -> setParent(this);
    //写字
    btn -> setText("我的第一个按钮");
    //第二种方法创建按钮
    QPushButton  *btn2  = new QPushButton("第二个按钮",this);
    //移动btn2
    btn2 -> move(200,200);
    //定义从窗口大小
    resize(600,400);

    //设置窗口的标题
    setWindowTitle("我的窗口");

    //固定窗口的大小
    setFixedSize(600,400);
    
    //自定义创建窗口
    MyButton *mybtn = new MyButton;
    mybtn->setText("我的按钮");
    mybtn->move(100,100);
    mybtn->setParent(this);
}
myWidget::~myWidget()
{
      qDebug()<<"MyWidget的析构调用";
}

这里直接把几个窗口显示出来
在这里插入图片描述

三、析构详解

然后关闭窗口可以看到这样一段打印的话
在这里插入图片描述

简单来说,在Qt里面有我们杀死他的父亲的时候,父亲也会杀死自己的孩子,所以我们New了一个对象向过后,如果在父类里面,他会自动进行释放(析构函数调用),就想这里一样,如果没有在父类里面我们则需要手动释放(delete),后面再说。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

永不秃头的程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值