Participer au site avec un Tip
Rechercher
 

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 :

Utilisation du widget QTreeView

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())
Utilisation d'un widget QTreeView

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())
Utilisation d'un widget QTreeView avec un modèle de données de type QFileSystemModel

Voici le résultat produit par cette application.