J'ai conçu un QMainWindow
avec QtCreator's
designer. Il se compose du widget central par défaut (un QWidget
) qui contient un QVBoxLayout
avec tous les autres widgets qu'il contient. Maintenant, tout ce que je veux, c'est que le QVBoxLayout
occupe automatiquement tout l'espace rectangle des widgets centraux.
Comment puis-je faire ceci? Je n'ai trouvé aucune propriété utilisable ni dans les propriétés des widgets centraux ni dans le QVBoxLayout's
ceux.
Vous n'avez pas besoin de créer un QVBoxLayout
manuellement. Sélectionnez simplement votre QWidget
central et appuyez sur un bouton de création de mise en page.
Si vous voulez le faire avec du code au lieu d'utiliser QtCreator
, vous pouvez définir la disposition dans un QWidget
, puis définir le QWidget
comme widget central de la fenêtre principale comme cette:
#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);
}
Ajoutez au moins un widget sur votre MainWindow
. Sélectionnez ensuite votre fenêtre en cliquant dessus et cliquez sur le bouton VerticalLayout
en haut de QTCreator
. Votre disposition verticale est automatiquement ajoutée au widget central et remplit toute la surface.
C'est déjà répondu, mais je préfère personnellement garder tous les éléments de contrôle et mises en page ajoutées manuellement au formulaire. Je n'ajoute pas de contrôles dans les fichiers de classe, je connecte simplement les signaux/emplacements pour masquer/afficher les widgets pertinents pour la logique de la classe, au sein de la classe.
Pour ajouter manuellement une mise en page à n'importe quel widget, vous devez d'abord ajouter au moins un widget/contrôle enfant. Ce n'était pas totalement clair pour moi et j'essayais d'abord d'ajouter la mise en page.