一、标准信号和槽:
二、自定义信号和槽:
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: 函数体
捕获列表
四、
五、