我遇到了问题,我认为这很奇怪。我正在使用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()
。
这些信号之间是否会发生这样的冲突,或者我的代码根本出现了什么问题?