信号与槽

(1 min to read)

观察者模式。当某个事件发生时,就会产生(emit)一个信号(signal),对该信号感兴趣的对象可以将自己的一个函数(槽,slot)与该信号连接。则每当该信号发出时,被连接的槽函数就会自动被回调。

信号与槽可以让两个不相关的对象建立联系,实现对象间的通信。

信号和槽机制是QT中用于代替回调的一种技术,它是类型安全的:一个信号的函数签名必须与接收它的槽函数的签名相匹配(参数类型一致,不过允许槽忽略一些信号中的参数);它是松耦合的,更加灵活,信号不需要关注哪些槽会与其连接。不过它的性能相比直接回调更差。

1
2
3
QObject::connect(&button, &QPushButton::clicked,
&app, &QApplication::quit);
// connect(sender, signal, receiver, slot);

一个信号可以连接多个槽函数,但信号发生时,这些槽函数的执行顺序是随机不可控的。