Qt 对象树
一、什么是对象树
Qt中的对象树就是Qt中对象间的父子关系,每一个对象都有它所有子对象的指针,都有一个指向其父对象的指针。当创建对象在堆区时,如果指定的父亲是QObject派生下来的类或者是QObject的子类派生下来的类,当父对象被析构时子对象也会被析构。
二、示例
1.创建一个MyPushButton对象,继承QPushButton
2.在mypushbutton.cpp中对MyPushButton对象的构造和析构函数添加消息
#include "mypushbutton.h"
#include<QDebug>
MyPushButton::MyPushButton(QWidget *parent) : QPushButton(parent)
{
qDebug()<<"MyPushButton构造调用";
}
MyPushButton::~MyPushButton()
{
qDebug()<<"MyPushButton析构";
}
3.在主窗口创建MyPushButton按钮的实例
#include "mainwindow.h"
#include<QPushButton>
#include"mypushbutton.h"
#include<QtDebug>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
MyPushButton *mybtn=new MyPushButton;
mybtn->resize(120,50);
mybtn->setText("MyPushButton");
mybtn->move(200,0);
mybtn->setParent(this);
}
MainWindow::~MainWindow()
{
}
4.在mainwindow.cpp中的MainWindow的析构函数里添加消息
MainWindow::~MainWindow()
{
qDebug()<<"mainwindow析构";
}
5.关闭主窗口,查看各对象析构的顺序
MyPushButton构造调用
mainwindow析构 //此时只是走到析构函数里打印了mainwindow析构,mainwindow还没有被析构掉
MyPushButton析构
6.正确的顺序应该是:关闭主窗口时,主窗口的析构函数被调用,然后主窗口会看自己有没有子对象,有的话先把他们析构了,最后再把自己析构。
本文福利,莬费领取Qt开发学习资料包、技术视频,内容包括(Qt实战项目视频教程+代码,C++语言基础,C++设计模式,Qt编程入门,QT信号与槽机制,QT界面开发-图像绘制,QT网络,QT数据库编程,QT项目实战,QSS,OpenCV,Quick模块,面试题等等)↓↓↓↓↓↓见下面↓↓文章底部点击莬费领取↓↓