Disposition à expansion automatique avec Qt-Designer


217

J'utilise Qt Designer.

Je veux en créer un QVBoxLayoutqui se développera automatiquement pour remplir toute la fenêtre.

La disposition des QVBoxLayoutvestiges est fixe.

Comment puis-je QVBoxLayoutdévelopper et remplir la fenêtre entière via le concepteur?


Si vous souhaitez simplement utiliser la mise en page dans Qt Designer, veuillez vous reporter aux conseils ci-dessous: stackoverflow.com/questions/1508939/qt-layout-on-qmainwindow

Réponses:


366

Après avoir créé votre QVBoxLayoutdans Qt Designer, cliquez avec le bouton droit sur l'arrière-plan de votre widget / boîte de dialogue / fenêtre (pas le QVBoxLayout, mais le widget parent) et sélectionnez Disposition -> Disposition dans une grille en bas du menu contextuel. Le QVBoxLayoutdevrait maintenant s'étirer pour s'adapter à la fenêtre et se redimensionnera automatiquement lorsque la fenêtre entière sera redimensionnée.


6
Merci, j'ai également cherché une solution à ce problème.
Simon H.

35
En fait, vous n'avez pas du tout besoin de créer la disposition de la grille. Au lieu de créer vous-même un QVBoxLayout, désélectionnez tous les éléments et cliquez sur l'arrière-plan du widget. Sélectionnez ensuite Disposition -> Disposition verticale.
Michal Kottman

3
@Michal Kottman: Cela ne fonctionne qu'au moment de la conception. Il ne changera pas la disposition lorsque l'utilisateur redimensionnera la fenêtre au moment de l'exécution.
Jay

5
La grille et la disposition verticale fonctionnent pour moi lors de la conception et de l'exécution.
AndiDog

2
Je souhaite ajouter un petit détail: si vous souhaitez ajouter une disposition auto-étirante à un étirante page QTabWidget , vous ne pouvez en fait pas cliquer avec le bouton droit sur l'arrière-plan de la page, car vous sélectionneriez le QTabWidget et non l'onglet correspondant. Vous devez cliquer avec le bouton droit sur l'étiquette de l'onglet, comme indiqué dans la fenêtre du concepteur, puis sélectionner Disposition -> Disposition dans une grille
Emanuele Cipolla

15

Selon la documentation , il doit y avoir un ensemble de mise en page de niveau supérieur.

Une mise en page de niveau supérieur est nécessaire pour garantir que vos widgets seront redimensionnés correctement lorsque sa fenêtre sera redimensionnée. Pour vérifier si vous avez défini une disposition de niveau supérieur, prévisualisez votre widget et essayez de redimensionner la fenêtre en faisant glisser la poignée de taille.

Vous pouvez en définir un en effaçant la sélection et en cliquant avec le bouton droit sur le formulaire lui-même et en choisissant l'une des dispositions disponibles dans le menu contextuel.

Dispositions Qt


2

J'ai essayé de trouver une propriété "adaptée à l'écran" mais il n'y en a pas.

Mais en définissant "maximumSize" du widget sur un "certain grand nombre" (comme 2000 x 2000), le widget sera automatiquement adapté à l'espace du widget parent.


6
Que se passe-t-il avec cette technique sur un MacBook Pro avec écran Retina (2880x1800)?
ta.speot.is

1
Réglez-le simplement sur le nombre maximum qu'il acceptera (ce que Designer me montre est 16777215) et il devrait fonctionner sur n'importe quelle taille de moniteur.
andreb

0

Une fois que vous avez ajouté votre mise en page avec au moins un widget, sélectionnez votre fenêtre et cliquez sur le bouton "Mettre à jour" de QtDesigner. L'interface sera redimensionnée à la taille la plus optimisée et votre mise en page s'adaptera à toute la fenêtre. Puis lors du redimensionnement de la fenêtre, la mise en page sera redimensionnée de la même manière.


Je mentionne que lorsque l'utilisateur redimensionne la fenêtre entière, la disposition verticale (et donc son contenu) s'étirera pour l'adapter. Peu m'importe à quoi ça ressemble dans le Qt Designer.
Elazar Leibovich

-7

Réglez horizontalPolicy & VerticalPolicy pour les contrôles / widgets sur "Préféré" .

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.