一、信号和槽机制是什么?
-
信号和槽用于两个对象之间的通信,信号和槽机制是Qt的核心特征,也是Qt不同于其他开发框架的的最突出特征。因为有了信号与槽的编程机制,在 Qt 中处理界面各个组件的交互操作时变得更加直观和简单。信号与槽关联是用 QObject::connect() 函数实现的。
-
信号(signal)就是在特定情况下被发射的事件。例如PushButton 最常见的信号就是鼠标单击时发射的 clicked() 信号,一个 ComboBox 最常见的信号是选择的列表项变化时发射的 CurrentIndexChanged() 信号。
-
槽(slot)就是对信号响应的函数。例如点击PushButton后要显示运算的结果的函数。槽就是一个函数,与一般的C++函数是一样的,可以定义在类的任何部分(public、private 或 protected),可以具有任何参数,也可以被直接调用。槽函数与一般的函数不同的是:槽函数可以与一个信号关联,当信号被发射时,关联的槽函数被自动执行。
-
信号和槽有以下特色和优越性:
- 信号和槽是类型安全的(type-safe),相关联的信号和槽的参数必须匹配;
- 信号和槽是松耦合的(loose coupling),信号发送者不知道也不需要知道接受者的信息;
- 信号和槽可以使用任意类型的任意数量的参数。
二、怎样使用信号和槽机制?
-
实现信号和槽的关联,其基本格式是:
QObject::connect(sender, SIGNAL(