观察者模式。当某个事件发生时,就会产生(emit)一个信号(signal),对该信号感兴趣的对象可以将自己的一个函数(槽,slot)与该信号连接。则每当该信号发出时,被连接的槽函数就会自动被回调。
信号与槽可以让两个不相关的对象建立联系,实现对象间的通信。
信号和槽机制是QT中用于代替回调的一种技术,它是类型安全的:一个信号的函数签名必须与接收它的槽函数的签名相匹配(参数类型一致,不过允许槽忽略一些信号中的参数);它是松耦合的,更加灵活,信号不需要关注哪些槽会与其连接。不过它的性能相比直接回调更差。
1 | QObject::connect(&button, &QPushButton::clicked, |
一个信号可以连接多个槽函数,但信号发生时,这些槽函数的执行顺序是随机不可控的。