Pyside2 如何共用同一个Slot槽如何找到发信号的对象

Pyside2 如何共用同一个Slot槽如何找到发信号的对象

Qt5的选择是使用一个信号映射器。它是一个能够从不同的信号源接收信号并调用一个具有唯一参数的单一回调函数(槽)的对象。然后该函数使用该参数来确定信号源。比方说,我们想把两个复选框连接到同一个槽。

创建一个信号映射器。

signalMapper = QSignalMapper()
将一个int类型的映射与回调函数关联起来。

signalMapper.mapped[int].connect(sync_checkboxes)
将触发信号的小部件连接到映射器上。

checkbox_1.clicked.connect(signalMapper.map)
checkbox_2.clicked.connect(signalMapper.map)
定义源和int值(0和1)之间的映射。

signalMapper.setMapping(checkbox_1, 0)
signalMapper.setMapping(checkbox_2, 1)
现在是接受整数值的回调。

def sync_checkboxes(index):
如果index == 0。
….

映射可以是无效的(源对象引用被传递),基于整数,基于字符串或基于对象。根据我对文档的理解,不同的类型可以混合使用,映射器会识别哪种映射与源相关,并调用相应的回调。如果为同一个源设置了多个映射,会发生什么,没有说,所以需要做一些实验。对于一个如此有趣的产品来说,文档如此之差,实在是令人遗憾。