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 |
import sys from PySide6.QtCore import Qt from PySide6.QtWidgets import QTreeWidgetItem, QApplication, QTreeWidget class MyWindow(QTreeWidget): def __init__(self): super().__init__() 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 |
import sys from PySide6.QtCore import QDir from PySide6.QtWidgets import QWidget, QTreeView, QVBoxLayout, QFileSystemModel, QApplication class MyWindow(QWidget): def __init__(self): super().__init__() 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 :