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 关闭窗口