信号和槽
信号和槽用于对象之间的通信。信号和时隙机制是Qt的主要功能,可能是与其他框架提供的功能最大不同的部分。Qt的元对象系统使信号和时隙成为可能。
简介
在GUI编程中,当我们更改一个小部件时,我们通常希望通知另一个小部件。更笼统地说,我们希望任何类型的对象都能够相互通信。例如,如果用户单击“关闭”按钮,我们可能希望调用窗口的close()函数。
其他工具包使用回调来实现这种通信。回调是指向函数的指针,因此,如果您希望处理函数将某些事件通知您,则可以将指向另一个函数的指针(回调)传递给处理函数。然后,处理函数将在适当时调用回调。尽管确实存在使用此方法的成功框架,但回调可能不直观,并且可能在确保回调参数的类型正确性方面遇到问题。
信号和槽
在Qt中,我们有一种替代回调技术的方法:我们使用信号和时隙。发生特定事件时会发出信号。Qt的小部件具有许多预定义的信号,但是我们始终可以对小部件进行子类化,以向其添加自己的信号。时隙是响应特定信号而调用的功能。Qt的小部件具有许多预定义的槽,但是通常的做法是对小部件进行子类化并添加自己的槽,以便您可以处理感兴趣的信号。