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 d'un 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 
 33 
#!/usr/bin/python3
# -*- coding : utf-8 -*-

import sys
from PyQt5.Qt 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_() )
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 
#!/usr/bin/python3
# -*- coding : utf-8 -*-

import sys
from PyQt5.Qt 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_() )
Utilisation d'un widget QTreeView avec un modèle de données de type QFileSystemModel

Voici le résultat produit par cette application.