QT信号与槽的使用

  QT是个很好的图形库,并且QTCreater编辑器非常好用,感觉是用过最好的了,刚开始学,先就拿来主义把,先不管怎么实现,先用上了再说。
  信号与槽主要是用于两个对象之间的通讯而设计的,有了它可以很方便的建立两个不同类型或是不同级别对象的通讯。

  信号与槽机制的连接方式
1、一个信号与一个槽相连
connect(Object1,SIGNAL(signal),Object2,SLOT(slot));
其中,signal为对象Objetc1的信号;slot为对象Object2的槽。
比如定义一个button的信号/槽机制:connect(button_name,SIGNAL(clicked()),this,SLOT(functions_name(arguments)));
也可写成:connect(button_name,“clicked()”,this,“functions_name(arguments)”);

2、一个信号与另一个信号相连
connect(Object1,SIGNAL(signal1),Object2,SIGNAL(signal2));
表示Object1的信号1发射可以触发Object2的信号2发射。

3、同一个信号与多个槽相连
connect(Objector1,SIGNAL(signal1),Objector2,SLOT(slot1));
connect(Objector1,SIGNAL(signal1),Objector3,SLOT(slot2));

4、同一个槽可以响应多个信号
connect(Objector1,SIGNAL(signal1),Objector2,SLOT(slot1));
connect(Objector2,SIGNAL(signal1),Objector2,SLOT(slot1));

信号与槽机制的优点
(1)类型安全
信号的参数类型和参数个数同接收该信号的槽的参数类型和参数个数相同。不过,一个槽的参数个数可以少于信号的参数个数,但缺少的参数必须是信号参数的最后一个或几个参数。
(2)松散耦合
信号和槽机制减弱了Qt对象的耦合度。激发信号的Qt对象无须知道是哪个对象的那个槽需要接收它发出的信号,只需要做的是在适当的时间发送适当的信号就可以了,而不需要知道也不需要关心它的信号有没有被接收到。

注:一个类若要支持信号和槽,就必须从QObject或QObject的子类继承,Qt信号和槽机制不支持对模板的使用。

信号与槽机制的效率
信号和槽机制增强了对象间的通信的灵活性,然后也损失了一些性能。同回调函数相比,信号与槽机制运行速度有些慢。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值