- 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 je vais vous montrer comment changer le sizeInt et le sizePolicy des widgets.Alors le sizeInt il faut savoir que c'est pas quelque chose qu'on change très souvent. Il n'y a
00:00:09 :pas de méthode en fait qui existe, on n'a pas de setSizeInt par exemple sur les widgets qui nouspermettrait de le modifier. C'est quelque chose qui va être fait directement au niveau de la
00:00:17 :classe et si on souhaite le modifier on va devoir par exemple comme je l'ai fait ici créer notrepropre classe qui hérite du QLineEdit et surcharger cette méthode. Donc là on crée notre propre
00:00:28 :lineEdit si vous voulez. On refait ici une méthode sizeInt et on lui donne un QSize pour modifierdonc ce sizeInt du lineEdit. Donc là j'ai créé une instance de mon custom lineEdit et comme ça
00:00:40 :je vais avoir ce sizeInt ici plutôt que celui par défaut. Donc comme je vous disais le sizeIntgénéralement on ne le change pas sur des widgets qui sont préexistants puisque ce qu'on va vouloirchanger c'est la façon dont ces widgets vont s'étendre ou se rétrécir dans l'interface. Mais
00:00:54 :le sizeInt par défaut généralement on n'a pas besoin d'y toucher, il est bien paramétré. C'estplus quand vous faites des widgets custom qui n'existent pas dans Qt. Si vous avez un widget
00:01:04 :complètement custom que vous faites là vous allez avoir besoin de définir sa taille recommandéeselon ce que vous vous pensez qui est le plus judicieux et quand vous faites un widget customvous ferez une classe de toute façon donc il vous suffit de configurer cette méthode sizeInt pourlui donner une taille recommandée par défaut. Quand on utilise un widget qui est déjà existant
00:01:23 :là on est obligé de passer par cette façon de faire en surchargeant cette méthode pour changerle sizeInt. Donc tout ça pour dire voilà qu'on peut le modifier et maintenant si je relance mon
00:01:34 :application vous allez voir qu'on peut donc changer la taille de mon interface et là on arrive jusqu'àun carré de 20 par 20 qui est la taille minimale recommandée pour ce widget. Si on voulait changer
00:01:44 :la taille par défaut on pourrait donc mettre par exemple une taille en largeur de 200 pixels et sije relance l'interface là vous voyez que par défaut et bien on va avoir un lineEdit qui prend200 pixels de large et je peux bien entendu puisque on a un sizePolicy qui est en expanding, expanding
00:02:00 :ça veut dire qu'on peut prendre plus de place mais aussi moins de place donc ça veut dire queje peux toujours réduire mon lineEdit et faire en sorte qu'il prenne moins de place dans l'interface.
00:02:09 :Donc ça c'est pour le sizeInt maintenant si je veux donc changer le sizePolicy par exemple si jevoulais avoir une valeur fixe qui soit équivalente au sizeInt donc je vais revenir avec un QSize de20 par 20 et on va changer ici la politique de la taille du lineEdit donc on va faire lineEdit
00:02:26 :et pour le sizePolicy on a une méthode setSizePolicy et on va changer le sizePolicy en précisant lesnouvelles valeurs pour l'axe horizontal et l'axe vertical. Donc QSizePolicy ici c'est à l'intérieur
00:02:39 :de QtWidget donc vous l'importez au début de votre application et ensuite depuis QSizePolicyvous allez avoir toutes les valeurs que l'on a vu dans la documentation comme expanding, maximum,minimum etc. Donc là je vais commencer par mettre fixed pour vous montrer ce que ça donne. Donc
00:02:53 :fixed et bien c'est tout simplement une taille fixe qui va utiliser le sizeInt et on ne pourrapas mettre une autre taille que celle-ci peu importe la taille de la fenêtre. Donc là on
00:03:02 :retrouve notre boîte de 20 par 20 et peu importe la taille que prend ma fenêtre vous voyez qu'onva rester avec cette taille fixe donc ça peut être pratique dans certains cas de figure. Moi dans mon
00:03:12 :cas je préfère avoir un comportement expanding qui est donc le comportement par défaut. Donc làvous voyez qu'on retrouve la lineEdit qui va prendre le maximum de place. On pourrait changer
00:03:21 :par contre la politique pour les deux widgets en hauteur donc sur l'axe vertical. Donc je pourraiscette fois-ci changer le fixed donc ça c'est le comportement par défaut sur le lineEdit et sur lepushbutton en vertical on a un comportement fixe donc il ne va pas prendre plus de place que le
00:03:37 :sizeInt. Par contre si je le mets en expanding donc là on va faire le test juste sur le lineEdit etvous allez voir qu'on va avoir une différence donc entre les deux c'est à dire que le lineEdit luiva pouvoir s'étendre sur la hauteur et le pushbutton lui va rester avec sa taille minimale.
00:03:52 :Si je change également sur le pushbutton donc là on va mettre button et on va mettre expandingsur l'axe horizontal et vertical là les deux widgets vont prendre le maximum de place possiblesur l'axe vertical. Donc vous voyez que ça permet d'avoir un comportement différent de ce qu'on
00:04:07 :avait par défaut et qui peut être préférable dans certains cas de figure. Par exemple si onsouhaitait avoir l'inverse de ce qu'on a par défaut, par défaut en fait c'est le lineEdit qui vaprendre le maximum de place et le pushbutton qui va être poussé vers la droite. Imaginez qu'on
00:04:21 :souhaite l'inverse, que le pushbutton prenne le maximum de place par rapport au lineEdit et bienon pourrait inverser les sizePolicy qu'on avait par défaut. Donc par défaut le lineEdit je me
00:04:32 :souviens bien il est expanding sur l'axe horizontal donc il va s'étendre le plus possible et ensizePolicy on avait fixed. Donc ce qu'on va faire c'est qu'on va changer, on va mettre un fixed sur
00:04:40 :l'axe horizontal et on va laisser le expanding sur l'axe vertical. On va faire pareil pour lebouton, on va laisser expanding sur l'axe vertical. Par contre sur l'axe horizontal donc je laisse
00:04:49 :expanding. Par défaut les boutons si je me souviens bien ils sont en minimum, je suis plus sûrexactement. On va vérifier en faisant un print du sizePolicy sur le bouton. Donc si je me souviens
00:05:00 :bien voilà on a en horizontalPolicy on est en minimum, c'est ça donc minimum sur l'axe horizontalet fixed sur l'axe vertical. Et donc là je l'ai changé, j'ai dit que le bouton sur l'axe horizontal
00:05:10 :il était en expanding et que le lineEdit il était en fixed. Donc ça veut dire que comme on le voitici sur l'axe horizontal le lineEdit ne prendra pas plus que ce qu'on a défini dans le sizeInd donc20 pixels et par contre le bouton lui va pouvoir prendre le maximum de place possible. Donc là on
00:05:25 :voit que quand je change la taille de ma fenêtre le bouton prend toute la place possible. Donc sije voulais avoir une taille minimale en largeur pour le lineEdit je pourrais mettre par exemple200 ici. Donc comme ça j'aurais suffisamment de place pour taper des informations dans le
00:05:38 :lineEdit. Cependant si je change la taille de la fenêtre, donc là je vous laisse deviner ce queça va faire, quand je change la taille de la fenêtre logiquement le bouton devrait prendrele plus de place donc le lineEdit ne devrait pas bouger et c'est le bouton qui va lui s'étendre
00:05:51 :avec mon interface. Donc on vérifie ça tout de suite si je dis pas des bêtises et vous voyezqu'effectivement c'est bien ça qui se passe. Le lineEdit garde sa taille fixe de 200 pixels et
00:06:01 :le bouton puisqu'il est en expanding logiquement va s'étendre avec la taille de ma fenêtre surl'axe horizontal. Donc je vous laisse jouer avec tout ça vous voyez que en changeant ce sizePolicy
00:06:11 :on peut changer les préférences de nos widgets et après tout va s'agencer en fonction de cessizePolicy sur notre interface. Donc on n'a pas besoin de jouer avec des valeurs fixes et c'est
00:06:21 :un peu comme ce qu'on a en web avec du responsive design, on va en fait modifier ces paramètres etensuite en fonction de la taille de la fenêtre et bien tout va s'agencer pour prendre plus oumoins de place en fonction de ces politiques de taille et de la taille minimale recommandée pour
00:06:35 :chaque élément. Je vous conseille également d'aller voir dans la documentation donc de lire tout ça,vous pouvez bien sûr le traduire parce qu'il y a pas mal de choses ici, en anglais c'est pasforcément évident et vous allez voir que tous ces éléments ici sont à peu près similaires,
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.