QT1:信号槽机制

QT1:信号槽机制

(1)信号槽机制简介:

         ①信号槽机制:信号槽机制与Windows下消息机制类似,消息机制是基于回调函数, Qt中用信号与槽来代替函数指针,信号槽机制是QT的核心机制,可以让编程人员将互不相关的对象绑定在一起,实现对象之间的通信。

         ②信号:当对象改变其状态时,信号就由该对象发射(emit)出去,对象只负责发送信号,它不知道另一端是谁在接收这个信号。这样就实现了真正的信息封装,能确保对象被当作一个真正的软件组件来使用。

         ③槽:槽是一个普通的对象成员函数,用于接收信号槽并不知道是否有信号与自己相连接,对象并不了解具体的通信机制。

         ④信号与槽的连接:所有从QObject或其子类派生的类都能够包含信号和槽,因为信号与槽的连接是通过QObject的connecto成员函数来实现的。connect(sender, SIGNAL(signal), receiver, SLOT(slot));其中sender与receiver是指向对象的指针, SIGNALO)与SLOT)是转换信号与槽的宏。

(2)信号槽机制的特点:

         一个信号可以连接多个槽:当信号发射时,会以不确定的顺序一个接一个的调用各个槽。

         多个信号可以连接同一个槽:无论是哪一个信号被发射,都会调用这个槽,

        信号直接可以相互连接:发射第一个信号时,也会发射第二个信号。

         连接可以被移除:这种情况用得比较少,因为在对象被删除时, Qt会自动移除与这个对象相关的所有连接。语法为: disconnec(sender, SIGNAL(signal), receiver, SLOT(slot);

(3)信号槽机制的注意事项:

         在定义槽函数时一定要注意避免间接形成无限循环,即在槽中再次发射所接收到的同样信号。

         如果一个信号与多个槽相联系的话,那么,当这个信号被发射时,与之相关的槽被激活的顺序将是随机的。

         宏定义不能用在signal和slot的参数中。

         信号和槽的叁数个数与类型必须一致。

猜你喜欢

转载自blog.csdn.net/weixin_39504171/article/details/94553105