Layout Qt sur QMainWindow

j'ai conçu un QMainWindowQtCreator's designer. Il se compose du widget central par défaut (a QWidget) qui contient un QVBoxLayout avec tous les autres widgets. Maintenant tout ce que je veux, c'est que le QVBoxLayout occupe automatiquement tout l'espace du rectangle central des widgets.

Comment puis-je faire cela? Je n'ai trouvé aucune propriété utilisable ni dans les propriétés des widgets centraux ni dans QVBoxLayout's.

33
demandé sur Aquarius_Girl 2009-10-02 15:15:55

4 réponses

Vous n'avez pas à créer un QVBoxLayout manuellement. Il suffit de sélectionner votre centrale QWidget et appuyez sur le bouton make-layout.

alt text

35
répondu Georg Schölly 2015-06-20 18:25:19

Si vous voulez le faire avec le code au lieu d'utiliser QtCreator, Vous pouvez mettre la disposition dans un QWidget et puis définissez

#include <QtGui>
#include <QWidget>
#include <QHBoxLayout>
#include "mainwindow.h"

MainWindow::MainWindow() {  

        // Set layout
        QHBoxLayout *layout = new QHBoxLayout;
        layout->addWidget(myWidget1);
        layout->addWidget(myWidget2);

        // Set layout in QWidget
        QWidget *window = new QWidget();
        window->setLayout(layout);

        // Set QWidget as the central layout of the main window
        setCentralWidget(window);

}
59
répondu Jaime Ivan Cervantes 2014-08-20 18:51:54

Ajouter au moins un widget sur votre MainWindow. Ensuite, sélectionnez votre fenêtre en cliquant dessus et cliquez sur le VerticalLayout Bouton QTCreator. Votre disposition verticale est automatiquement ajoutée au widget central et remplit toute la surface.

11
répondu Patrice Bernassola 2014-08-20 18:51:26

C'est déjà répondu, mais personnellement, je préfère garder tous les éléments de contrôle et layouts ajouté manuellement au formulaire. Je n'ajoute pas de contrôles dans les fichiers de classe, je branche simplement les signaux/slots pour cacher/afficher les widgets pertinents à la logique dans la classe, dans la classe.

pour ajouter manuellement une mise en page à un widget, vous devez d'abord ajouter au moins un widget enfant/contrôle. Ce n'était pas très clair pour moi et j'essayais d'ajouter la mise en page en premier.

3
répondu Rachael 2015-01-22 18:07:38