03 QT对象树

这篇具有很好参考价值的文章主要介绍了03 QT对象树。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Tips:

QT通过对象树机制,能够自动、有效的组织和管理继承自QObject的Qt对象,不需要用户手动回收资源,系统自动调用析构函数。

 验证对象树功能

新建C++文件

03 QT对象树,QT,qt

 继承自QPushButton,但没有QPushButton,但有其父类QWidget,则选择Qwidget

03 QT对象树,QT,qt

 修改继承和声明析构函数

 03 QT对象树,QT,qt

关闭窗口时先打印MyWidget的析构,再打印MyPushButton的析构

这是因为释放对象树时从根结点开始寻找,只是执行析构函数释放堆区资源,但是没有释放对象,找一下有没有子类,如果有则先释放子类资源,子类释放顺序与父类一样。真正的释放过程是从下往上(子类到父类),只是析构的调用顺序是从上往下(父类到子类)

 03 QT对象树,QT,qt文章来源地址https://www.toymoban.com/news/detail-599257.html

//MyPushButton.h
#ifndef MYPUSHBUTTON_H
#define MYPUSHBUTTON_H
//修改继承,由QWidget修改为QPushButton
#include <QPushButton>

class MyPushButton : public QPushButton
{
    Q_OBJECT
public:
    explicit MyPushButton(QWidget *parent = 0);

    ~MyPushButton();
signals:

public slots:
};

#endif // MYPUSHBUTTON_H
//MyPushButton.cpp
#include "mypushbutton.h"
#include "QDebug"

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

}

MyPushButton::~MyPushButton(){
    qDebug()<<"MyPushButton析构调用";
}
//MyWidget.cpp
#include "mywidget.h"
//包含头文件
#include "QDebug"
#include "QPushButton"
#include "mypushbutton.h"

MyWidget::MyWidget(QWidget *parent)
    : QWidget(parent)
{
    //按钮控件
    QPushButton *btn= new QPushButton;

    //显示按钮
    btn->show(); //以顶层的方式显示

    //设置父窗口,让按钮依赖于当前窗口上
    btn->setParent(this); //this指向当前窗口

    //设置btn内容
    btn->setText("你好");

    //创建第二个按钮
    QPushButton *btn2 = new QPushButton("hello",this);

    //重设按钮大小
    btn2->resize(200,50);

    //设置窗口尺寸
    this->resize(600,400);

    //移动按钮
    btn->move(0,0);
    btn2->move(150,0);

    //固定窗口尺寸(设置后窗口不可收缩)
    this->setFixedSize(600,400);

    //设置窗口标题
    this->setWindowTitle("这是窗口标题");

    //自定义自己创建的按钮,捕获析构函数
    MyPushButton *myBtn = new MyPushButton;
    myBtn->setParent(this);
    myBtn->move(0,100);
    myBtn->setText("自定义按钮");

}

MyWidget::~MyWidget()
{
    qDebug()<<"MyWidget析构函数调用";
}

到了这里,关于03 QT对象树的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Qt】—— 对象模型的认识

    目录 (一)Parent对象指针 (二)对象树的引入 (三)代码示例 在Qt中创建很多对象的时候会提供⼀个 Parent 对象指针,接下来解释这个 parent 到底是⼲什么的。 首先QObject是以 对象树 的形式组织起来的。 当创建⼀个QObject对象时,会看到QObject的构造函数接收⼀个QObject指针作

    2024年03月12日
    浏览(83)
  • QT6之类实例化——对象指针和对象

    Qt完全遵循C++ 中类的实例化动作按存储位置可以分为 栈中分配内存 和 堆中分配内存 两种,分别对应不用 new 实例化类和用 new 实例化类。 一、实例化两种方式 1、栈中分配; 如下图是qt非常常见的操作,将m_view声明为对象,它完全表明该对象的生命周期与MyWidget的生命周期相

    2023年04月25日
    浏览(49)
  • Qt之元对象metaObject

    什么是元对象昂?在qt中元对象就是可以描述其它对象结构的对象,例如获取其它对象类的名称,一个对象下有多少成员函数,有哪些属性等。元对象的类QMetaObject。要使用元对象必须要满足以下几个条件: 必须要是QObject的子类 类的声明中必须包含Q_OBJECT宏 元对象编译器(

    2024年02月09日
    浏览(30)
  • Qt快速学习(一)--对象,信号和槽

    目录 1.Qt概述 1.1 什么是Qt 2.2 手动创建 2.3 pro文件 2.4 一个最简单的Qt应用程序        3 第一个Qt小程序 3.1 按钮的创建 3.2 对象模型(对象树)       3.3 Qt窗口坐标体系 4 信号和槽机制         4.1 系统自带的信号和槽 4.2 自定义信号和槽     4.3信号槽的拓展     

    2024年02月12日
    浏览(38)
  • 【Qt】对象树与坐标系

    需要云服务器等云产品来学习Linux的同学可以移步/--腾讯云--/--阿里云--/--华为云--/官网,轻量型云服务器低至112元/年,新用户首次下单享超低折扣。 目录  一、Qt Creator快捷键 二、对象树 1、对象树的析构 2、自定义类的编写 三、使用控件显示hello world 1、QLineEdit(单行文本输

    2024年01月20日
    浏览(30)
  • Qt 对象序列化/反序列化

    阅读本文大概需要 3 分钟 日常开发过程中,避免不了对象序列化和反序列化,如果你使用 Qt 进行开发,那么有一种方法实现起来非常简单和容易。 我们知道 Qt 的元对象系统非常强大,基于此属性我们可以实现对象的序列化和反序列化操作。 比如有一个学生类,包含以下几

    2024年02月13日
    浏览(41)
  • [QT编程系列-3]:C++图形用户界面编程,QT框架快速入门培训 - 2- QT程序的运行框架:HelloWorld、常见控件、对象树原理

    目录 2. QT程序的运行框架 2.1 Hello World程序框架 2.2 QT Designer初识 2.3 用QT Designer设计用户登录界 上述示例代码中,首先根据应用程序的需求使用 QCoreApplication 或 QApplication 定义 app 对象。如果你的应用程序需要图形界面,则使用 QApplication,否则使用 QCoreApplication。然后,你可以

    2024年02月15日
    浏览(49)
  • Qt元对象系统Meta-Object System

    元对象系统是一个基于标准C++的扩展,为Qt提供了 信号与槽机制 、实时类型信息、动态属性系统。 元对象系统的三个基本条件: 类必须继承自QObject、类声明Q_OBJECT宏、元对象编译器moc 。 Qt元对象编译器(Moc)是Qt框架中的一个重要工具,用于处理Qt特有的元对象系统。元对

    2024年01月23日
    浏览(43)
  • [Qt开发探幽(二)]浅谈关于元对象,宏和Q_ENUM

    目录 [Qt开发探幽(二)]浅谈关于元对象,宏和Q_ENUM 前言 一、元对象 但是 二、关于Q_OBJECT等宏属性 1.元对象系统 2.信号与槽 3.属性系统 三、关于Q_ENUMS 1.将其注册到Q_NAMESPACE下 2.类内注册 最近在开发的时候,我自己写了一套虚函数。这也是我第一次写这么大一个框架,遇到了

    2024年02月10日
    浏览(35)
  • 在 Qt 的文本编辑类中,document() 是一个成员函数,用于获取文档对象

    在 Qt 的文本编辑类中, document() 是一个成员函数,用于获取文档对象。它返回与文本编辑器关联的 QTextDocument 对象的指针。 QTextDocument 类是 Qt 中用于处理富文本内容的类。它包含了文本内容以及相关的格式、样式和布局信息。通过 document() 函数,可以获取到当前文本编辑器

    2024年02月04日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包