Voici un premier exemple simple d'utilisation du widget QTreeView
.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
#!/usr/bin/python3 # -*- coding : utf-8 -*- import sys from PySide2.QtWidgets import * class MyWindow(QTreeWidget): def __init__(self, *args): QTreeWidget.__init__(self, *args) self.setColumnCount(1) self.insertTopLevelItems( 0, [ QTreeWidgetItem(None, [ "Tables" ] ) ] ) root = self.topLevelItem( 0 ) for i in range(10): node = QTreeWidgetItem(None, [ "Item" + str(i) ] ) root.addChild( node ) self.itemDoubleClicked.connect( self.processItem ) def processItem(self, item, column): print( ">>> " + str(item) + " - " + item.data(column, Qt.DisplayRole) ) if __name__ == "__main__" : app = QApplication( sys.argv ) myWindow = MyWindow() myWindow.show() sys.exit( app.exec_() ) |
Voici le résultat produit par cette application.
Mais notez qu'il est possible de passer directement un objet de model au composant QTreeView : en fait il implémente une architecture MVC.
Dans l'exemple suivant, on utilise un modèle de données associé au système de fichiers de votre PC. Ce modèle est prêt à l'emploi : il est fourni par la Qt au travers de la classe QFileSystemModel
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
#!/usr/bin/python3 # -*- coding : utf-8 -*- import sys from PySide2.QtCore import * from PySide2.QtWidgets import * class MyWindow(QWidget): def __init__(self, *args): QWidget.__init__(self, *args) treeModel = QFileSystemModel() treeModel.setRootPath( QDir.currentPath() ) treeView = QTreeView() treeView.setModel(treeModel) layout = QVBoxLayout(self) layout.addWidget(treeView) self.setLayout(layout) if __name__ == "__main__" : app = QApplication( sys.argv ) myWindow = MyWindow() myWindow.show() sys.exit( app.exec_() ) |
Voici le résultat produit par cette application.
Améliorations / Corrections
Vous avez des améliorations (ou des corrections) à proposer pour ce document : je vous remerçie par avance de m'en faire part, cela m'aide à améliorer le site.
Emplacement :
Description des améliorations :