J'ai deux QTreeWidget dans un formulaire, l'un sans enfants, l'autre avec enfants comme illustré dans la capture d'écran ci-dessous. Je veux que l'arborescence droite soit développée si elle est réduite (et réduite si elle est développée), chaque fois qu'un élément de l'arborescence de gauche est sélectionné.python - Synchronisation de deux QTreeWidgets
J'ai essayé d'y parvenir avec le code ci-dessous, où je me connecte une fonction de poignée à l'événement itemSelectionChanged de la liste de gauche. Le problème est que les méthodes .collapse() et .expand() nécessitent un paramètre QIndexModel (hérité de QTreeView), mais QTreeWidget utilise un modèle prédéfini auquel je ne sais pas comment accéder.
Quelqu'un peut-il me donner la main?
import sys
from PyQt4 import QtGui, QtCore
class Window(QtGui.QWidget):
def __init__(self):
QtGui.QWidget.__init__(self)
self.tree1 = QtGui.QTreeWidget(self)
self.tree2 = QtGui.QTreeWidget(self)
layout = QtGui.QHBoxLayout(self)
self.tree1.header().hide()
self.tree2.header().hide()
self.tree1.itemSelectionChanged.connect(self.handleSelected)
for text in 'A B C D'.split():
item = QtGui.QTreeWidgetItem(self.tree1, [text])
for text in '1 2 3 4'.split():
item = QtGui.QTreeWidgetItem(self.tree2, [text])
for text in 'red blue green'.split():
child = QtGui.QTreeWidgetItem(item, [text])
layout.addWidget(self.tree1)
layout.addWidget(self.tree2)
def handleSelected(self):
if self.tree2.isExpanded():
self.tree2.collapse()
else:
self.tree2.expand()
if __name__ == '__main__':
app = QtGui.QApplication(sys.argv)
window = Window()
window.show()
sys.exit(app.exec_())
Merci, @ ekhumoro, ça marche bien maintenant! À votre santé. – maurobio