信号和槽我感觉属于Qt的核心。
1.connect函数
connect函数连接信号与槽。
比如:
connect(Mytimer,&QTimer::timeout,thread1_task1,&Mythread1::slot_drawimage);
(1)第一个参数:发送对象
(2)第二个参数:发送对象的信号,需要取地址
(3)第三个参数:接受对象
(4)第四个参数:接受对象的槽函数(其实就是一个函数),需要取地址
(如果有参数,connect 中信号和槽函数其实可以不用带参数)
2.信号
主要分为了标准信号、自定义信号
(1)标准信号:
就是官方提供的标准信号,直接F1查看用法就可以了。
(2)自定义信号:
先在h文件中“signal”中声明信号,然后只需要在cpp中emit发送就可以了。
3.槽函数
主要分为了标准槽、自定义槽和Lambda
(1)标准槽:
就是官方提供的槽函数,直接F1查看用法就可以了。
(2)自定义槽:
先在h文件中“private slots”中声明槽函数,然后在cpp文件中定义函数就可以。
(3)Lambda表达式(c++11):
是一个匿名函数。
需要在pro文件中加上
在connect中格式为这样:
“[]”中"="为把外部所有局部变量以值传递进来(只读)加上“加mutable” 就变成可读可写了。
改为“&”把外部所有局部变量传递进来(可读可写,但可能会导致内存问题)
4.重载函数
当需要重载函数的时候,就需要用到函数指针。
(1)第一个int 为返回值的类型。
(2)*p为函数的指针。
(3)(int,int)表示参数。
例子: