信号和槽——点击按钮关闭窗口
connect(信号的发送者,发送的具体信号,信号的接收者,信号的处理(槽))
信号槽的优点:松散耦合 信号发送端和接收端本身是没关联的 通过connect连接 将两端耦合在一起
示例:
#include "widget.h"
#include <QPushButton>
#include <mypushbutton.h>
#include <QDebug>
Widget::Widget(QWidget *parent)
: QWidget(parent)
{
//创建一个按钮
QPushButton * btn = new QPushButton;
//btn->show(); //单独一个窗口显示 show以顶层方式弹出窗口控件
//让btn对象依赖 widget窗口中
btn->setParent(this);//this是指向当前对象的指针
//显示文本
btn->setText("第一个按钮");
//创建第二个按钮 按照控件的大小创建窗口
QPushButton * btn2 = new QPushButton("第二个按钮",this);
//移动btn2按钮
btn2->move(100,100);
//按钮重新指定大小
btn2->resize(20,20);
//重置窗口大小
resize(600,400);
//设置固定的窗口大小
setFixedSize(600,400);
//设置窗口的标题
setWindowTitle("第一个窗口");
//创建一个自己按钮的对象
MyPushButton * myBtn = new MyPushButton;
myBtn->setText("我自己的按钮");
myBtn->move(200,0);
myBtn->setParent(this);//设置到对象树中
//需求 点击一下我的按钮关闭窗口
//参数1 信号发送者 参数2 发送的信号(signals)(存放的是函数的地址) 参数3 信号接收者 参数4处理的槽函数 槽(slots)
connect(myBtn,&QPushButton::clicked,this,&Widget::close);
}
Widget::~Widget()
{
qDebug()<<"Widget的析构调用";
}
自定义的信号和槽
需求://Teacher类 老师类
//Student类 学生类
//下课后,老师会触发一个信号,饿了,学生相应信号,请客吃饭