信号与槽

标题:信号与槽机制

http://www.devbean.net/2012/08/qt-study-road-2-catelog/这里有比较好的入门教程

1信号与槽的基本概念

        Qt提供了信号与槽机制用于完成界面的响应操作,是完成任意两个Qt对象之间的通信机制。其中,信号会在某个特定的情况下或动作下被触发,槽等同于接收并处理信号函数。

2信号的声明  

        信号的声明是在头文件中进行的,QT的关键词指出进入信号声明区,随后即可声明自己的信号。如:

signals:

        voidmySignal();

        voidmySignal(int x);

        voidmySignal(int x,int y);

信号的返回值都是void,所以没有返回值。

3槽的声明     

        槽是普通的成员函数,唯一特殊的就是它可以与信号相关联。与其关联的信号发射,与其相关的槽就会被调用。    

        槽的声明也是在头文件中进行的。

Public slots:

        VoidmySlot();

        VoidmySlot(intx);

        VoidmySlot(intx,int y);

 

 

4.信号与槽机制的连接方式

(一)一个对象的信号与另一个对象的槽相连        

connect(object1,SIGNAL(signal1),object2,SLOT(slot));//表示object1signal1发射就可以触发object2的槽slot

(二)一个信号与另一个信号相连

connect(object1,SIGNAL(signal1),object2, SIGNAL(signal1);//表示object1signal1发射就可以触发object2signal1发射

(三)同一个信号可以与多个槽相连

connect(object1,SIGNAL(signal1),object2,SLOT(slot1));

connect(object1,SIGNAL(signal1),object2,SLOT(slot2));

(四)同一个槽可以响应多个信号

connect(object1,SIGNAL(signal1),object2,SLOT(slot));

connect(object2,SIGNAL(signal1),object2,SLOT(slot));

5应该注意的问题

        信号与槽的效率是非常高的,但是同真正的回调函数比起来,由于增加了灵活性,所以在速度上还是有所损失,如果要追求高效率的话,就尽量减少使用这种机制。

        信号与槽机制与普通的函数调用一样,如果使用的不恰当的话,在程序执行也有可能造成死循环。因此,在定义槽函数时一定要注意避免形成无线循环,即在槽中再发收所接收到的同样信号,防止形成死循环。    

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

        宏定义不能用在signalslot的参数中,因为moc不具有扩展宏定义的功能。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值