一、标准信号和槽:
    image.png

    二、自定义信号和槽:
    1、条件:
    a、要编写新的类并且让其继承Qt的某些标准类
    b、这个新的子类必须从QObject类或者是QObject子类进行派生
    c、在定义类的头文件中加入 Q_OBJECT 宏

    2、自定义信号注意点:
    ①、信号是类的成员函数
    ②、返回值必须是 void 类型
    ③、信号的名字可以根据实际情况进行指定
    ④、参数可以随意指定, 信号也支持重载
    ⑤、信号需要使用 signals 关键字进行声明, 使用方法类似于public等关键字
    ⑥、信号函数只需要声明, 不需要实现
    ⑦、在程序中发射自定义信号: 发送信号的本质就是调用信号函数
    ⑧、习惯性在信号函数前加关键字: emit, 但是可以省略不写
    注:emit只是显示的声明一下信号要被发射了, 没有特殊含义
    底层 emit == #define emit

    3、自定义槽函数注意点:
    ①、返回值必须是 void 类型
    ②、槽也是函数, 因此也支持重载
    ③、槽函数需要指定的参数, 需要看连接的信号的参数的个数
    ④、槽函数的参数是用来接收信号传递的数据的, 信号传递的数据就是信号的参数
    ⑤、槽函数的参数应该和对应的信号的参数个数,从左到右类型依次对应
    ⑥、信号的参数可以大于等于槽函数的参数个数 == 信号传递的数据被忽略了
    ⑦、Qt 中的槽函数可以是类的成员函数、全局函数、静态函数、Lambda表达式(匿名函数)
    ⑧、槽函数可以使用关键字进行声明: slots (Qt5中slots可以省略不写)
    public slots:
    private slots: –> 这样的槽函数不能在类外部被调用
    protected slots: –> 这样的槽函数不能在类外部被调用

    三、Lambda 表达式:
    说明:Lambda 表达式就是一个匿名函数
    语法:capture opt -> ret {body;};
    - capture: 捕获列表
    - params: 参数列表
    - opt: 函数选项
    - ret: 返回值类型
    - body: 函数体

    捕获列表
    四、
    五、