信号和槽
信号和槽的解析图
信号和槽:
连接函数:connect
参数:
参数1:信号的发送者
参数2:发送的信号(函数的地址)
参数3:信号的接受者(窗口)
参数4:处理的槽函数
松散耦合
实现点击我的按钮,关闭窗口
connect(myBtn, &QPushButton::clicked,this,&QWidget::close);
去帮助文档找一下signal 看怎么用
看一下槽怎么用
mywidget.cpp
// 需求 点击我的按钮 关闭窗口
// 参数1 信号的发送者 参数2 发送的信号(函数的地址) 参数3 信号的接受者(窗口) 参数4 处理的槽函数
connect(myBtn, &QPushButton::clicked,this,&QWidget::close);
// connect(myBtn, &MyPushButton::clicked,this,&myWidget::close);和上一行一样的意思,可以用父类也可以用子类
自定义的信号和槽
案例 :下课后 老师会触发一个信号--饿了 学生响应信号 请客吃饭
创建一个新的项目02SingalandSlot
创建两个class--Teacher和Student
teacher.h
1、声明老师类
#ifndef TEACHER_H
#define TEACHER_H
#include <QObject>
class Teacher : public QObject
{
Q_OBJECT
public:
explicit Teacher(QObject *parent = nullptr);
signals: //自定义信号 写到signals
//返回值是void 只需要声明 不需要实现
// 可以有参数,可以重载
void hungry();
};
#endif // TEACHER_H
student.h
2、声明学生类 .cpp文件中去实现
#ifndef STUDENT_H
#define STUDENT_H
#include <QObject>
class Student : public QObject
{
Q_OBJECT
public:
explicit Student(QObject *parent = nullptr);
//返回值 void 需要声明 也需要实现(.cpp文件中写实现)
//可以有参数 可以发生重载
void treat();
signals:
};
#endif // STUDENT_H
student.cpp
#include "student.h"
#include <QDebug>
Student::Student(QObject *parent) : QObject(paren