vendredi 14 août 2015

Qt - How to make Qt Widget grow with the window size ?

Vous cherchez à faire que les éléments placés dans la fenêtre de votre application Qt/C++, suivent la taille de la fenêtre principale quand l'utilisateur resize (redimensionne) la fenêtre c'est à dire qu'il tire sur les poignées. La solution est ici.

Voici ce que je lis à ce sujet sur StackOverFlow :
http://stackoverflow.com/questions/6044836/how-to-make-a-qt-widget-grow-with-the-window-size

C'est totalement insuffisant, comme les intervenants de cet article, j'ai passé du temps à essayer de comprendre ce que notre ami avait bien voulu dire. Il faut d'abord se familiariser de l'utilisation des Layouts de Qt afin de créer le formLayout que l'on voit sur la figure suivante pour pouvoir y insérer les objets graphiques de la fenêtre principale.

La solution à notre question passe, en suite, par la disparition de la l'icone "Interdiction" que l'on voit sur l'image suivante :

centralWidget est affublée d'une icone "interdiction de stationner"
Ce que les commentaires du post essayent d'expliquer, c'est qu'il faut aller chercher l'option de la fenêtre principale : "Mettre en page dans un layout de formulaire" ou dans une grille et cliquer dessus pour faire disparaître l'icône d'interdiction :
Resizable Application Qt - Mise en page dans un Layout
Ceci s'obtient donc en sélectionnant la "QMainWindow", en cliquant droit et en allant chercher l'option "Mettre en page" tout en bas, puis "Mettre en page dans un layout de formulaire". L'icône d'interdiction a disparue :

Qt - Fenêtre Principale - Mise en page automatique dans un Layout de formulaire
Ainsi tout les objets graphiques que l'on a placé dans le formLayout se retailleront lorsque l'on modifiera la taille de la fenêtre principale.

Je crois que là, on vient de s'ouvrir un univers entier. Il faut maintenant essayer d'autres options, les layouts sont de quatre types, il faut voir comment cela se passerait pour la mise en page d'enfants de la fenêtre principale.

C'est à nous de jouer !

Aucun commentaire:

Enregistrer un commentaire