Столкновение сигнатур PyQt на разных объектах? - PullRequest
0 голосов
/ 25 августа 2011

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

Может ли быть такое столкновение между этими сигналами или что-то в корне не так с моим кодом?

...