1、使用软件版本 QT5.9.1

#include "mywidget.h"
#include <QPushButton> //按键控键的头文件
#include "mypushbutton.h"
#include <QDebug>
//类函数功能

myWidget::myWidget(QWidget *parent)
    : QWidget(parent)
{
    //1、创建一个按钮
    QPushButton *btn =new QPushButton ;
    btn->show();//show 以顶层方式弹出窗口控价
    //让btn对象,依赖在myWideget窗口中
    btn->setParent(this);
    //显示文本
    btn->setText("第一个按钮");
    btn->move(10,10);//(10,10移动坐标)

    //2、创建第二个按钮,按照控件大小创建窗口
    QPushButton *btn2 =new QPushButton("第二个按钮",this);

    btn2->move(100,100);//(100,100移动坐标)

    btn2->resize(120,50);//设置按键大小
    //重置窗口大小
    resize(640,480);

    //设置固定窗口大小
    setFixedSize(600,400);

    //设置窗口标题
    setWindowTitle("第一个窗口");

    //创建一个自己的对象
    MyPushButton *mybtn =new MyPushButton;
    mybtn->setText("我自己的按钮");
    mybtn->move(300,0);
    mybtn->setParent(this);//设置到对象树中

    //信号和槽
    //connect(信号的发送者,信号的具体信号,信号的接收者,信号处理(槽))
    //信号槽的优点,松散耦合, 信号的发送端和接收者,本身是没有关联的,通过connect连接,
    //将两者耦合在一起。

    //eg:点击 “我自己的按钮”  关闭窗口
    //连接函数 connect(from,what, to,do)
    //参数1 :信号的发送者 参数2 :发送的信号
    //参数3 :信号的接送者 参数4 : 信号的处理(槽函数)
    connect(mybtn,&MyPushButton::clicked,this , &myWidget::close);
    //connect(mybtn,&QPushButton::clicked,this , &QWidget::close);
}

myWidget::~myWidget()
{
    qDebug()<<"myWidget的析构调用";
}
 
#ifndef MYWIDGET_H
#define MYWIDGET_H

#include <QWidget>

class myWidget : public QWidget
{
    Q_OBJECT //Q_OBJECT宏,允许使用信号和槽的机制

public:
    myWidget(QWidget *parent = 0); //构造函数
    ~myWidget();  //析构函数
};

#endif // MYWIDGET_H