知道而且不关心那个槽接受该信号。Qt的信号槽机制保证,如果你连接了一对信号槽,槽会在适当的时间带着信号的参数被调用。信号和槽可以附带任何类型任何数量的参数。信号和槽是完全类型安全的。槽可以用来接受信号,不过槽也是普通的成员函数。类似于对象不知道谁接受它的信号,槽也不知道是否有信号连接自己。这保证了Qt可以创建完全独立的组件。一个信号可以连接无数的槽,并且一个槽可以连接你想要连接太原理工大学毕业设计(论文)用纸6的信号。甚至可以直接连接两个信号(当第一个信号产生,立即产生第二个信号)。信号和槽一起形成了一种强大的组件编程机制。QT的信号和槽的机制可以保证如果你把一个信号和一个槽连接起来,槽会在正确的时间使用信号的参数而被调用。信号和槽可以使用任何数量、任何类型的参数。它们是完全类型安全的:不会再有回调核心转储(coredump)。可以把许多信号和你所希望的单一槽相连,并且一个信号也可以和所期望的许多槽相连。把一个信号和另一个信号直接相连也是可以的。总体来看,信号和槽构成了一个强有力的组件编程机制。如果一个类要使用信号与槽机制,它就必须是从QObject或QObject的子类继承,而且类的定义必须加上Q_OBJECT宏。signals、slots和emit是QT特有的关键字,分别用来表示信号、槽、和发送信号,移除这些关键字和预处理程序,就可以使用“标准的C++编译器”[6][7][8]。槽同其他函数一样也具有访问权限,只是槽的访问权限决定了谁可以和它相连,如一个publicslots:包含了任何信号都可以相连的槽。一个protectedslots:包含了只有这个类和它的子类的信号才能连接的槽。这就是说这些槽只是类的实现的一部分,而不是它和外界的接口。一个privateslots:包含了只有这个类本身的信号可以连接的槽,甚至它的子类都没有获得连接的权利。图2-2信号与槽机制示意图