1 发送者和接收者都需要是 QObject 的子类(当然,槽函数是全局函数、 Lambda
表达式等无需接收者的时候除外);
2 使用 signals 标记信号函数,信号是一个函数声明,返回 void,不需要实
现函数代码;
3 槽函数是普通的成员函数,作为成员函数,会受到 public、 private、
protected 的影响;
4 使用 emit 在恰当的位置发送信号;
5 使用 QObject::connect()函数连接信号和槽。 任何成员函数、 static 函数、全局函数和 Lambda 表达式都可以作为槽函数
一个信号可以和多个槽相连 如果是这种情况,这些槽会一个接一个的被调用,但是它们的调用顺序
是不确定的。
| 多个信号可以连接到一个槽 只要任意一个信号发出,这个槽就会被调用。 |
一个信号可以连接到另外的一个信号
当第一个信号发出时,第二个信号被发出。除此之外,这种信号-信号的形
式和信号-槽的形式没有什么区别。
槽可以被取消链接
这种情况并不经常出现,因为当一个对象 delete 之后, Qt 自动取消所有连
接到这个对象上面的槽。
| 使用 Lambda 表达式 在使用 Qt 5 的时候,能够支持 Qt 5 的编译器都是支持 Lambda 表达式的。 |
在连接信号和槽的时候, 槽函数可以使用 Lambda 表达式的方式进行处理。