基于对象的 QSignalMapper 的问题

Trouble with object-based QSignalMapper

我正在尝试在 PyQt 中设置信号槽排列,其中信号传输大量信息。我想用一个QObject作为载体,将我要传递的各种信息设置为QObject的属性。从理论上讲,这应该可行——有一个 QSignalMapper.setMapping() 重载,它接受一个发送者和一个 QObject 作为参数。

这是简化的代码:

self.mapper = QtCore.QSignalMapper()
self.timeline.finished.connect(self.mapper.map)
carrier = QtCore.QObject()
carrier.contents = (item1, item2)
self.mapper.setMapping(self.timeline, carrier)
self.portalMapper.mapped.connect(self.report)

def report(self, carrierObject):
    print 'Triggered'

很遗憾,它不起作用。我已经通过消除过程将问题追溯到 setMapping 函数。

如果我将 QObject 换成 int,同样的方案也能正常工作。它也与我添加到 QObject 的属性没有任何关系 - 使用全新的 QObject 会导致同样的问题。

setMapping 函数的 特定 重载似乎有问题。关于这里的问题有什么想法吗?

感谢@ekhumoro 的建议,完全跳过 QSignalMapper 方法,只创建一个自定义信号。工作得很好。