3、QT的信号和槽机制

信号(signals):

  1. 自定义信号写到signals下;
  2. 信号没有返回值,即返回类型为void
  3. 只需要声明,不需要实现
  4. 可以有参数,也可以无参数,即可以重载
signals:
     void yourSignal(); 
     void yourSignal(intx);    

槽(slot)处理信号:

  1. 早期的qt必须写到public slot下,后期版本可以写到public下,也可以写成全局函数
  2. 返回值类型void
  3. 需要声明也需要实现
  4. 可以有也可以没有参数,可以重载
pulicslots:
        void yourSlot();
        void yourSlot(intx);

信号和槽的连接(connect):

  1. 一个信号可以连接多个槽
  2. 多个信号可以连接同一个槽
  3. 一个信号可以和另外一个信号连接
  4. 连接可以被移除
  5. 要把信号成功和槽连接(或连接到另外一个信号),他们的参数必须具有相同的顺序和相同的类型
  6. 如果信号的参数比它所连接的槽的参数多,那么多余的参数将会被简单的忽略

小结:

  从QOBject或其子类(如QWidget)派生的类都能使用信号和槽机制。这种机制本身 是在QObject中实现的,并不只局限于图形用户界面编程中:当对象的状态得到改变时,它可以某种方式将信号发射(emit)出去,但它并不了解是谁在接收这个信号。槽被用于接收信号,事实上槽是普通的对象成员函数。槽也并不了解有任何信号与自己相连接。而且并不了解具体的通信机制。这实际上是“封装 ”概念的生动体现,信号与槽机制确保了Qt中的对象被当做软件的组件来使用,体现了“软件构件化”的思想。

一个初识C++的小白
原文地址:https://www.cnblogs.com/Real-m/p/13476004.html