- Formations
- conversion_path Parcours & Formations
- science Projets
- data_object Exercices de code
- psychology Exercices IA
- quiz Quiz
- Articles
- rss_feed Blog
- sort_by_alpha Glossaire
- menu_book Guides
- help_center FAQ
- media_link Ressources
- Communauté
- groups La communauté
- forum Questions
- live_tv Mentorats
- science Projets mensuels
- Formations
- conversion_path Parcours & Formations
- science Projets
- data_object Exercices de code
- psychology Exercices IA
- quiz Quiz
- Articles
- rss_feed Blog
- sort_by_alpha Glossaire
- menu_book Guides
- help_center FAQ
- media_link Ressources
- Communauté
- groups La communauté
- forum Questions
- live_tv Mentorats
- science Projets mensuels
Deviens membre Premium magic_button
Débloque cette session en devenant Membre Premium 🚀
Inscris-toi
(c'est gratuit !)
Un compte est nécessaire pour participer aux discussions.
Créer un compte person00:00:00 :Dans cette partie, on rentre dans le cœur du sujet puisqu'on va créer notre QFileSystemModel.Derrière ce nom complexe se cache un modèle qui va gérer tout le côté système de fichier,qui va nous permettre de l'afficher à l'intérieur de notre TreeView et de notre ListView.
00:00:17 :L'intérêt également, c'est qu'on va avoir un seul modèle pour les deux vues.On va pouvoir modifier ce modèle et répercuter les changements à l'intérieur des deux vues en même temps.
00:00:25 :Je vais créer une méthode en plus, après le setupUI, que je vais appeler createFileModel.On va créer cette méthode tout en bas, après le setupConnections.
00:00:36 :Je crée la méthode createFileModel.A l'intérieur de cette méthode, on va créer notre FileModel et on va le seter pour notre TreeView et notre ListView.
00:00:45 :Je vais commencer par créer le modèle. Je vais l'appeler self.model.On va aller chercher dans QtWidget un QFileSystemModel.On va ensuite devoir configurer le chemin de base que ce modèle va regarder.
00:00:58 :Si vous voulez, on va spécifier un chemin.Tous les changements qui sont faits à l'intérieur de ce chemin vont être visibles dans notre modèle.Par exemple, si on crée un dossier ou qu'on supprime un fichier,tous ces changements vont être reconnus par notre modèle.
00:01:11 :Pour ça, on va récupérer à partir de QtCore une méthode qui va nous retourner une variablequi va être le chemin de base de notre ordinateur.
00:01:21 :On va le récupérer depuis QtCore puisque ça va être, là encore, dépendant du système d'exploitation.Par exemple, sur mon Mac, ça va aller chercher le chemin de base qui est juste le slash.
00:01:31 :Et si on est sur Windows, par défaut, ça va être le disque C, donc C de .slash.On va le récupérer dans une variable que je vais appeler rootPath.
00:01:39 :Dans QtCore, on va avoir QDeer.Dans QDeer, on a une méthode qui s'appelle rootPath qui nous permet de récupérer ce chemin par défautqui est le chemin à la racine de votre disque dur.
00:01:52 :On va ensuite mettre ce rootPath dans notre modèle avec la méthode setRootPathet on va lui passer ce chemin, cette variable qu'on a créée à la ligne précédente.
00:02:03 :Comme ça, notre modèle, par défaut, va être à cet endroit et on va pouvoir l'assigner dans notre TreeView et notre ListView.Pour ça, on va faire self.treeview.setModel et on va lui passer le modèle qu'on a créé, donc self.model.
00:02:16 :On va faire la même chose pour notre ListView, donc ListView.setModel et on va lui passer self.model.La même chose pour les deux vues.Pour finir, on va changer le root, ce qu'on appelle le root index de notre ListView et de notre TreeView.
00:02:31 :Le root index, c'est tout simplement là où notre vue va commencer.Si vous voulez, si on met le root index à ces deux points slash mes documents,quand on va lancer notre application, notre ListView va se retrouver dans mes documents.
00:02:48 :On va le changer et on va le seter au rootPath pour l'instant.On va par défaut les mettre à la racine qu'on a récupérée dans cette variable rootPath.
00:02:57 :Là, vous allez voir, ça peut paraître bizarre au premier abord puisque cette méthode,donc la méthode setRootIndex qu'on va mettre sur notre ListView et sur notre TreeView,donc setRootIndex, elle, ce qu'elle attend, c'est un QModelIndex.
00:03:10 :Vous voyez ici dans le pop-up qui est apparu, on nous demande un QModelIndex.Ce QModelIndex, on va le récupérer depuis notre modèle.Pour ça, on va faire self.model.index et cette méthode index, on va lui donner un chemin
00:03:24 :et cette méthode index à laquelle on donne un chemin va nous retourner à un QModelIndex.Il faut à chaque fois passer par le modèle, par cette méthode index à laquelle on passe un cheminpour pouvoir ensuite seter le rootIndex avec cette méthode.
00:03:36 :Vous ne pouvez pas juste passer par exemple rootPath ici, ça ne va pas fonctionnerpuisque cette méthode s'attend à avoir un QModelIndex.Ce qu'on va faire, c'est passer par notre modèle, donc self.model.index
00:03:48 :et on va lui passer la variable rootPath qui correspond au chemin à la racine de mon ordinateur.Je vais faire pareil pour notre TreeView, donc on va faire self.TreeView.setRootIndex
00:03:59 :et ensuite on va lui passer la même chose, c'est-à-dire le rootPath à partir de notre modèleet à partir de cette méthode index.Normalement, on a tout qui est fait. Cette méthode, on l'appelle directement après le setup.
00:04:11 :On pourrait, si vous préférez, tout mettre à l'intérieur du setup, l'appeler ici directement aussi.Ça marche, c'est exactement la même chose.Et on va lancer notre configuration pour voir si ça fonctionne.
00:04:21 :Je clique sur la flèche pour lancer mon applicationet vous voyez que par défaut, on a bien notre TreeView et notre ListViewqui sont au même endroit et qui sont à la racine de mon ordinateur.
00:04:32 :On retrouve ici, par exemple, les applications.Là, j'ai toutes mes applications, on va retrouver Users avec les différents utilisateurs de mon ordinateuret à droite, ici, on aura la même chose mais sous forme de liste.
00:04:43 :La grosse différence entre le TreeView et le ListView, c'est que le TreeView,on va avoir cette arborescence ici qui me permet directement de me balader à l'intérieur de mon système d'exploitationalors que le ListView, ici, ne va qu'afficher le chemin dans lequel on estet on n'aura pas la possibilité, pour l'instant, si je double clique, par exemple, de rentrer à l'intérieur d'un dossier.
00:05:02 :Donc ça, il va falloir le coder nous-mêmes.On va créer des connexions entre les signaux, par exemple, clic et double clicqui vont nous permettre de naviguer à l'intérieur de notre vue dans le ListView, ici.
00:05:12 :Et on va également faire des connexions sur notre TreeView pour avoir une synchronisation, si vous voulez, entre les deuxpour que quand je clique, par exemple, dans un dossier, ici, il soit affiché dans mon ListView.
00:05:23 :Donc ça, on va le faire dans les prochaines parties avec les connexionsmais pour l'instant, on a notre modèle qui est créé et qui nous permet, comme vous le voyez,d'afficher les fichiers et les dossiers à l'intérieur de notre système d'exploitationet comme ça, on peut se balader directement, on n'a rien besoin de faire de plus.
00:05:36 :Tout est intégré dans le QFileSystemModel.Donc toute l'arborescence, toute la gestion de l'arborescence des dossiers et des fichiersest gérée automatiquement par le QFileSystemModel.Donc voilà pour la création du modèleet dans les prochaines parties, on va commencer à créer toute cette logique de signauxqui vont nous permettre d'avoir une synchronisation entre tout ça
Ce n'est pas fini...
✋
Tu as complété % du parcours 🔥
Termine l'intégralité de la formation pour pouvoir débloquer ton attestation de réussite.