目录
Qt信号槽的关联函数是connect
该函数在Qt里面有4种写法:
1、宏的写法
这种写法会涉及到2个宏:SIGNAL 表示信号,SLOT表示槽
公式如下:
connect(信号发送者,SIGNAL(信号(参数类型...)),信号接收者,SLOT(槽(参数类型...)),连接方式);
2、用一般的函数指针来写信号或槽,前提条件是信号槽无重载
这种写法仅适用于信号槽无重载的情况下,如果有重载就会导致编译失败
公式如下:
connect(信号发送者,&类名::信号名,信号接收者,&类名::槽名,连接方式);
看公式就可以知道,这个只有函数名,没有参数,所以不能有重载,不能出现同名函数
3、当信号槽有重载时,使用QOverload来加载函数指针
当有重载时,需要带参数来指定具体使用哪个函数,就可以使用QOverload
connect(信号发送者,QOverload<形参类型...>::of(&类名::信号名),信号接收者,QOverload<形参类型...>::of(&类名::槽名),连接方式);
4、当槽功能较简单时,使用lambda表达式取代槽函数
lambda表达式就是匿名函数,比较适合写功能比较简单的代码
connect(信号发送者,QOverload<形参类型...>::of(&类名::信号名),信号接收者,[=](形参列表...){...},连接方式);
特别说明一下:[=](形参列表...){...}
中括号,表示抓取外部变量的方式,小括号里面放的是参数,大括号里面是功能代码