Qt - 元对象系统 - 信号与槽_信号与槽连接(一对多)

本文详细介绍了Qt中的信号与槽机制,包括一对一、一对多、多对一的连接方式,以及自动关联和断开连接的方法。重点讲解了不同连接方式的示例,并提到了参数列表的匹配原则。
摘要由CSDN通过智能技术生成

信号与槽

信号与槽连接(一对多)

信号与槽的关联方式有如下特点:
在这里插入图片描述
①一个信号连接一个槽:
connect(sender, SIGNAL(single1()), receiver, SLOT(slotFun()));
如:
在这里插入图片描述
在这里插入图片描述
②一个信号连接一个信号:
connect(sender, SIGNAL(single1()), receiver, SIGNAL(single2()));
如:
在这里插入图片描述
③一个信号连接多个槽,关联信号的槽函数按照建立连接时的顺序依次执行:

connect(sender, SIGNAL(single1()), receiver1, SLOT(slotFun()));
connect(sender, SIGNAL(single1()), receiver2, SLOT(slotFun()));
connect(sender, SIGNAL(single1()), receiver3, SLOT(slotFun()));

如:
在这里插入图片描述
④多个信号连接一个槽:

connect(sender1, SIGNAL(single1()), receiver, SLOT(slotFun()));
connect(sender2, SIGNAL(single2()), receiver, SLOT(slotFun()));
connect(sender3, SIGNAL(single3()), receiver, SLOT(slotFun()));

如:
在这里插入图片描述
⑤ 信号与槽的自动关联:
ui_xxxx.h文件中 connectSlotsByName()方法通过对象名支持信号与槽的自动关联。不采用connect()函数而是采用on_objectName_signal命名方式命名槽达到自动关联的效果。
如类头文件中声明槽方法
在这里插入图片描述
信号与槽的断开关联:
QObject::disconnect(const QObject* sender,const char* signal,const QObject receiver,const char method);
①断开与一个对象所有的信号的所有关联
disconnect(sender,0,0,0);
等价于:
sender->disconnect();
②断开与一个指定信号的所有关联
disconnect(sender, SIGNAL(single1()), 0, 0);
等价于:
sender->disconnect(SIGNAL(single1()));
③ 断开与一个指定接受者receiver的所有关联
disconnect(sender, 0, receiver, 0);
等价于:
sender->disconnect(SIGNAL(single1()));
④断开指定信号与槽的关联:
disconnect(sender, SIGNAL(single1()), receiver, SLOT(slotFun()));
等价于:
disconnect(myConnection); //myConnection为connect()的返回值
如:
xxx.h文件中添加m_res变量用于保存connect()返回值。

具体

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
所以大家可以选择大家一种习惯的方式进行信号与槽的连接方式
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
虽然加上, 但是实际上并没有使用上
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
信号与槽的参数列表, 保持一致. 但是有的时候, 不需要使用到, 就可以省略.

结语:

时间: 2020-07-26

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值