PyQt信号签名在不同对象上发生冲突?

时间:2011-08-25 09:57:17

标签: python pyqt pyqt4 signals-slots

我遇到了问题,我认为这很奇怪。我正在使用PyQt 4.8。 我有一个PyQt自定义小部件(self),它在堆叠小部件中包含3个小部件,其中一个是自定义QTreeWidget(tree),另外两个用于添加(adder })或编辑(editor)项目。 adder已连接到self以在添加新项目时更新树:

self.connect(self.adder, SIGNAL("close()"), self.switchStack)
self.connect(self.adder, SIGNAL("updateTree()"), self.tree.buildTree)

self.switchStack只是根据发件人在堆叠页面之间切换。 这工作正常,但是当我添加editor组件并以完全相同的方式连接时:

self.connect(self.editor, SIGNAL("close()"), self.switchStack)
self.connect(self.editor, SIGNAL("updateTree()"), self.tree.buildTree)

它无效。 adder小部件工作得很好,总是调用插槽,self关闭它并更新树。 editor但是刚刚关闭,updateTree()信号似乎根本没有被self捕获。 close()适用于两者。我肆虐,因为信号甚至以两种物体完全相同的方式发射:

self.emit(SIGNAL("updateTree()"))
self.emit(SIGNAL("close()"))

然后我将editor的信号签名更改为update()并开始工作。实际上它适用于任何签名,不包括updateTree()

这些信号之间是否会发生这样的冲突,或者我的代码根本出现了什么问题?

0 个答案:

没有答案