基于对象的 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 方法,只创建一个自定义信号。工作得很好。
我正在尝试在 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 方法,只创建一个自定义信号。工作得很好。