У меня была проблема, и я думаю, что это странно.Я использую 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()
.
Может ли быть такое столкновение между этими сигналами или что-то в корне не так с моим кодом?