3、QT的信号和槽机制
信号(signals):
- 自定义信号写到signals下;
- 信号没有返回值,即返回类型为void
- 只需要声明,不需要实现
- 可以有参数,也可以无参数,即可以重载
signals: void yourSignal(); void yourSignal(intx);
槽(slot)处理信号:
- 早期的qt必须写到public slot下,后期版本可以写到public下,也可以写成全局函数
- 返回值类型void
- 需要声明也需要实现
- 可以有也可以没有参数,可以重载
pulicslots: void yourSlot(); void yourSlot(intx);
信号和槽的连接(connect):
- 一个信号可以连接多个槽
- 多个信号可以连接同一个槽
- 一个信号可以和另外一个信号连接
- 连接可以被移除
- 要把信号成功和槽连接(或连接到另外一个信号),他们的参数必须具有相同的顺序和相同的类型
- 如果信号的参数比它所连接的槽的参数多,那么多余的参数将会被简单的忽略
小结:
从QOBject或其子类(如QWidget)派生的类都能使用信号和槽机制。这种机制本身 是在QObject中实现的,并不只局限于图形用户界面编程中:当对象的状态得到改变时,它可以某种方式将信号发射(emit)出去,但它并不了解是谁在接收这个信号。槽被用于接收信号,事实上槽是普通的对象成员函数。槽也并不了解有任何信号与自己相连接。而且并不了解具体的通信机制。这实际上是“封装 ”概念的生动体现,信号与槽机制确保了Qt中的对象被当做软件的组件来使用,体现了“软件构件化”的思想。
一个初识C++的小白