widget.h

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QPushButton>                 //按钮对象头文件
class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();
private:
    QPushButton b;                    //方式1 直接创建按钮
    QPushButton *b1;                  //方式2 声明按钮指针 (这种方式不是实体) 
};
#endif // WIDGET_H

main.cpp

#include "widget.h"

#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    w.show();
    return a.exec();
}

widget.cpp

#include "widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
{
    b.setParent(this);         //使用方式1创建的按钮可以直接操作,绑定父对象,this 当前窗口
    b.setText("hello");
    b1=new QPushButton(this); //使用方式2 需要将它变成实体,可以在创建实体的时候直接绑定父对象
    b1->setText("close");     //通过指针方式操作
    b1->move(20,20);

    connect(&b,&QPushButton::pressed,this,&Widget::close);
    /*
        &b                     信号发生者 指针  (如果是方式2它本身就是指针,就不需要&)
        &QPushButton::pressed  处理信号  &发送者类名::信号名字
        this                   信号接收者
        &Widget::close         槽函数,信号处理  &接收的类名::槽函数名字
    */
}

Widget::~Widget()
{
}

运行效果,点击按钮b 关闭窗口

最后修改:2020 年 10 月 24 日
声明:无闻风博客|版权所有,违者必究|如未注明,均为原创| 转载:转载请注明原文链接