首页 > 其他分享 >对象树

对象树

时间:2024-01-19 22:11:23浏览次数:9  
标签:Widget parent 对象 MyPushButton QPushButton include

对象树 概念:各个窗口对象通过建立父子关系构造对的一个关系树 内存管理: 父对象释放的时候会自动释放各个子对象 (使用children列表) 以后基本都是用new的方式来创建窗口对象 注意点: 1 父对象能够被释放 2 父对象、子对象,直接或者间接继承自QObject



#include "widget.h"
#include "ui_widget.h"
#include <QPushButton>
#include "mypushbutton.h"
Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    //局部变量在函数退出的时候就会自动释放
//    QPushButton btn("按钮1",this);
//    btn.show();
    /* 解决 让按钮的生命周期长一点
     * 1 static
     * 2 类成员变量
     * 3 new 一个 动态内存分配对象
    */

    MyPushButton *btn1 = new MyPushButton(this);
    btn1->setText("按钮1");
    //没有delete

    //验证析构
    //再继承一个按钮类,在子类的析构函数里边打log

}

Widget::~Widget()
{
    delete ui;
}




//mypushbutton

#ifndef MYPUSHBUTTON_H
#define MYPUSHBUTTON_H

#include <QWidget>
#include <QPushButton>
class MyPushButton : public QPushButton //继承自QPushButton
{
    Q_OBJECT
public:
    explicit MyPushButton(QWidget *parent = nullptr);
    ~MyPushButton();

signals:
};

#endif // MYPUSHBUTTON_H




#include "mypushbutton.h"
#include <QDebug>
MyPushButton::MyPushButton(QWidget *parent)
    : QPushButton{parent}
{}

MyPushButton::~MyPushButton()
{
    qDebug()<<"MypushButton Destoryed";
}




标签:Widget,parent,对象,MyPushButton,QPushButton,include
From: https://www.cnblogs.com/lambdaios/p/17975736

相关文章

  • 细说JavaScript对象(JavaScript对象详解)
    在JavaScript中对象作为数据类型之一,它的数据结构区别于其余5中数据类型,从数据结构角度看对象就是数据值的几个,其书就结构就是若干组名值对,类似于其他语言中的哈希、散列关联数组等,但对象在JavaScript中不仅仅扮演着数据类型的角色,同时也是JavaScript语言的实现基础,可通过内置对......
  • 细说JavaScript内置对象(JavaScript内置对象详解)
    ![细说JavaScript内置对象(JavaScript内置对象详解)](https://img-blog.csdnimg.cn/direct/69e530474ccf4835b58ecf810db1f348.png#pic_center)一、String对象任何一门语言都会有关于js字符串的介绍,一连串的字符组成一串,就构成了字符串。字符串的处理不存在生活中还是在计算机应......
  • 细说JavaScript BOM之window对象
    window对象是JavaScript中最大的对象,其他对象都是window对象的一部分,window对象表示浏览器的一个实例,在浏览器中它有双重身份,既是通过JavaScript访问浏览器窗口的一个接口,又是ECMAScript标准中规定的Globel(全局)对象。第二个身份说明了我们在网页中定义的任何一个变量、函数和对......
  • C++-类和对象(1)
    引言:C++语言兼容C语言的基础上,更多的是面向对象进行编程,即相较于事务处理的流程,更侧重于处理过程中涉及到的类以及对象。今天向大家分享C++中的类与对象相关知识。1.类的定义:常使用class关键字定义一个类:由两部分构成,分别是成员属性和成员函数。classclassName//类名{//成员......
  • 面向对象的三大特征
    面向对象的三大特性封装packagecom.zzl.oop2.Demo1.Demo4;//类private:私有publicclassStudent1{//名字privateStringname;//学号privateintid;//性别privateStringsex;privateintage;//提供一些可以操作属性的方法......
  • 细说JavaScript BOM之window常用子对象
    一、locationlocation翻译过来就是位置的意思,打开浏览器窗口大家可以看到导航栏上有一个URL地址。//例如https://www.zhishunet.com//分心可知,它使用的网络协议是https服务器名称是www,zhishunet.comlocation常用对象属性属性描述search设置或返回从问好(?......
  • [Java SE/JDK] Map之重定义key对象的hash值
    0序言项目上有个场景:数据源连接池需要对key对象的hash值重写,保证通过相同的关键属性(datasourceName)值去重不同的对象。publicabstractclassAbstractDatabaseConnectorKeyedObjectPool<KextendsDataSource,VextendsAbstractConnector>1重写Map的key对象的hash值......
  • C++中对象作为函数参数进行传参
    在C++语言环境中,对象是类的一个实例。 有三种方式:1、直接使用对象作为函数参数,形参和实参是不同的对象,它们所占地址空间不同,因此形参的改变并不影响实参的值。2、传入指向对象的指针作为函数参数,所谓“传址调用”,就是在函数调用时使用实参对象的地址,形参和实参都指向同一个地......
  • 第26节: Vue3 绑定到对象
    在UniApp中使用Vue3框架时,你可以使用对象绑定语法将属性绑定到对象上。下面是一个示例,演示了如何在UniApp中使用Vue3框架使用绑定到对象:<template><view><button@click="toggleActive">ToggleActive</button><div:style="{color:activeColor,fontWeight:......
  • nacos 动态刷新 数组对象 List/数组类型、复杂类对象配置
    @Value环境依赖版本SpringCloud是个大前提,不然还是考虑上面方式或者原生接入方案;@NacosPropertySource(dataId="mydata",autoRefreshed=true)同时@RefreshScope方能接收到nacos的push数据。@NacosValue依赖springbootNacos动态刷新基本数据类型很简单,只需要在字段......