2010-08-16 5 views
170

J'utilise Qt Designer.Mise en page à expansion automatique avec Qt-Designer

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

La disposition du QVBoxLayout reste fixe.

Comment puis-je provoquer l'expansion de QVBoxLayout et remplir toute la fenêtre via le concepteur?

+0

Si vous voulez juste la mise en page uset dans Qt Designer, s'il vous plaît ref beugler conseils: http://stackoverflow.com/questions/1508939/qt-layout-on-qmainwindow –

Répondre

279

Après avoir créé votre QVBoxLayout dans Qt Designer, cliquez-droit sur l'arrière-plan de votre widget/dialogue/fenêtre (pas le QVBoxLayout, mais le widget parent) et sélectionnez Lay Out -> Lay dans une grille de la en bas du menu contextuel. Le QVBoxLayout devrait maintenant s'étirer pour s'adapter à la fenêtre et se redimensionner automatiquement lorsque la fenêtre entière est redimensionnée.

+0

Ouais j'ai compris ça. Mais c'est un mauvais défaut. Que se passe-t-il exactement lorsque vous faites glisser le 'QVBoxLayout' sur le widget de la fenêtre principale? –

+4

Merci, j'ai aussi cherché une solution à ce problème. –

+25

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. Ensuite, sélectionnez Disposition -> Disposer verticalement. –

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. Ensuite, lors du redimensionnement de la fenêtre, la mise en page sera redimensionnée de la même manière.

+0

I Ment que lorsque les l'utilisateur redimensionne toute la fenêtre, la disposition verticale (et donc son contenu) s'étire pour l'ajuster. Je ne m'inquiète pas à quoi cela ressemble dans le Qt Designer. –

2

J'ai essayé de trouver une propriété "fit to screen" mais il n'y en a pas. Mais le réglage de "maximumSize" du widget à un "grand nombre" (comme 2000 x 2000) adaptera automatiquement le widget à l'espace du widget parent.

+1

Que se passe-t-il lorsque vous essayez la solution acceptée? –

+4

Que se passe-t-il avec cette technique sur un MacBook Pro avec écran Retina (2880x1800)? –

+1

Il suffit de le définir au nombre maximum qu'il acceptera (ce que Designer me montre est 16777215) et il devrait fonctionner sur n'importe quelle taille d'écran. – andreb

-3

Définissez l'option HorizontalPolicy & VerticalPolicy pour les contrôles/widgets sur "Preferred".

9

Selon le documentation, il doit y avoir un ensemble de disposition de niveau supérieur. Une mise en page de premier niveau est nécessaire pour garantir que vos widgets seront redimensionnés correctement lorsque la fenêtre est 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 une 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.

Qt layouts

Questions connexes