Qt的信号与槽

依旧是根据《C+++GUI+QT4》这本书继续学习。
槽函数是普通C++成员函数几乎是一样的,可以为虚函数,可以被重载,可以为公有,可以为私有,也可以被其他C++成员函数直接调用;同时,他们的参数可以为任意类型。唯一不同的是,槽函数可以和信号连接在一起。
connect语句样式:
connect(sender,SIGNAL(signal),receiver, SLOT(slot));
这里的sender和receiver是指向Q_Object的指针,signal和slot是不带参数的函数名。实际上,这两个宏会把他们的参数转换为相应的字符串。
由上面可以发现:
(1)槽函数必须是Q_OBject类的成员函数,不能为全局函数等等
同时,信号和槽函数连接会有其他可能性
(2)一个信号可以连接多个槽函数,但是值得注意的是同时发送这一个信号会以一个不确定的顺序一个接着一个调用这些槽函数,换而言之,槽函数调用顺序无序
(3)多个信号可以连接一个槽
(4)一个信号可以与另外一个信号连接
类似于connect(sender,SIGNAL(signal1),receiver, SIGNAL(signal2));
由此发射信号1时,也会同时发送信号2.
(5)连接可以移除disconnect,实际上不需要专门移除,当对象被销毁时,会自动移除所有连接
(6)想要成功连接,那么信号和槽函数必须有相同类型,相同顺序的参数,当信号的参数比槽函数的参数多的时候,多余的参数会被忽略掉

猜你喜欢

转载自blog.csdn.net/qq_42956179/article/details/105245515