QT项目代码注释及手动实现对象数模型

 2.

 头文件

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>      //引入头文件
#include<QPushButton>

QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }        //命名空间的声明
QT_END_NAMESPACE


class Widget : public QWidget         //创建继承自QWidget的自定义图形化界面类  
{
    Q_OBJECT                          //信号与槽对应的元

signals:
    void change();                

public slots:
    //void on_change_slot();           //自定义的槽函数

public:
    Widget(QWidget *parent = nullptr);         //构造函数的声明,参数四QWidget*类型的指针
    ~Widget();                          
                                                //析构函数
private:
    Ui::Widget *ui;                            //ui界面的指针,可以通过该指针使用ui界面上的组件  

    QPushButton *btn1;                           //自定义的组件
};
#endif // WIDGET_H

源文件

#include "widget.h"                   //引入头文件
#include "ui_widget.h"                //引入ui文件生成的C++文件

Widget::Widget(QWidget *parent)       //自定义类的定义
    : QWidget(parent)               //调用父类的有参构造,完成子类从父类继承的成员的初始化
    , ui(new Ui::Widget)           //给ui指针实例化空间
{
    ui->setupUi(this);             //调用ui中的类的成员函数


    this->btn1 = new QPushButton(this);      //为组件分配空间  

    this->btn1->setText("按钮");        //更改自定义类的组件内容用this指针

    ui->clickBtn->setText("按钮2");     //更改ui界面上的组件用ui指针

    Widget::~Widget()           //自定义类的析构函数的定义
    {
        delete ui;              //将ui指针的内容释放掉
    }

测试文件

#include "widget.h"        //引入工程中的头文件


#include <QApplication>      //引入应用程序的头文件


int main(int argc, char *argv[])
{
    QApplication a(argc, argv);    //实例化一个应用程序类对象


    Widget w;               //在栈区,给自定义的类实例化对象
    w.show();               //调用展示函数


    return a.exec();             //轮询等待处理
}

3.


#include <iostream>
#include <list>
 
using namespace std;
 
class Object
{
public:
    list<Object *> children;            //创建子组件链表
    Object(Object* parent=nullptr)
    {
        if(parent!=nullptr){            //表明创建对象时,给定了父组件
            parent->children.push_back(this);    //将自己的地址放入父组件的孩子链表中
        }
    }
 
    virtual ~Object()        //释放所有子组件
    {
        for(auto it=children.begin();it!=children.end();it++){
            delete *it;
        }
    }
};
 
class A:public Object
{
public:
    A(Object* parent=nullptr)
    {
        if(parent!=nullptr){
            parent->children.push_back(this);
        }
        cout<<"A的构造"<<endl;
    }
 
    ~A()
    {
        cout<<"A的析构"<<endl;
    }
};
 
 
int main()
{
   Object obj;
 
    A* a=new A(&obj);
   return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值