Layout Qt sur QMainWindow
j'ai conçu un QMainWindow
QtCreator'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
.
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.
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);
}
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.
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.