基于对象的QSignalMapper遇到麻烦

时间:2017-06-13 02:18:06

标签: python qt pyqt signals-slots 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函数的特定重载。关于这个问题的任何想法?

1 个答案:

答案 0 :(得分:0)

感谢@ ekhumoro建议完全跳过QSignalMapper方法并创建一个自定义信号。工作就像一个魅力。