信号和槽是一种高级接口,应用于对象之间的通信,它是QT的核心特性,也是QT区别于其它工具包的重要地方。信号和槽是QT自行定义的一种通信机制,它独立于标准的C/C++语言,因此要正确的处理信号和槽,必须借助于一个称为moc(Meta Object Complier)的QT工具,该工具是一个C++预处理程序,它为高层次的事件处理自动生成所需要的附加代码。
在所有从QObject或其子类例如(QWidget)派生的类都包含信号和槽,当对象改变其状态时,信号就由该对象发射出去,这就是对象所要做的全部事情,它不知道另一端是谁在接收信号。这是真正的信息封装,它确保对象被当作一个真正的软件组件来使用。槽用于接收信号,但它们是普通的对象成员函数。一个槽并不知道是否有任何信号与自己相连接。而且,对象不了解具体的通信机制。