Mise en page Qt sur QMainWindow
-
19-09-2019 - |
Question
J'ai conçu un QMainWindow
avec le designer de QtCreator's
. Il se compose du widget central par défaut (un QWidget
) qui contient une QVBoxLayout
avec tous les autres widgets en elle. Maintenant, tout ce que je veux, est que le QVBoxLayout
occupe automatiquement l'ensemble des widgets central rectangle espace.
Comment puis-je faire cela? Je ne trouve aucune propriété ni utilisable dans les propriétés des widgets centrales, ni celles de QVBoxLayout's
.
La solution
Vous ne devez pas créer un QVBoxLayout
manuellement. Il suffit de sélectionner votre QWidget
central et appuyer sur un bouton make-layout.
Autres conseils
Si vous voulez faire avec le code au lieu d'utiliser QtCreator
, vous pouvez définir la mise en page dans un QWidget
puis définissez le QWidget
comme le widget central de la fenêtre principale comme ceci:
#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 la fenêtre en cliquant dessus et cliquez sur le bouton VerticalLayout
en haut de QTCreator
. Vous verticale mise en page est automatiquement ajouté au widget central et remplit toute la surface.
Ceci est déjà répondu, mais je préfère garder tous les éléments de contrôle et mises en page ajoutés manuellement à la forme. Je ne pas ajouter des contrôles dans les fichiers de classe, je brancher simplement les signaux / slots pour masquer / afficher des widgets correspondant à la logique de la classe, au sein de la classe.
Pour ajouter manuellement une mise en page à un widget que vous devez d'abord ajouter au moins un widget enfant / contrôle. Ce n'était pas tout à fait clair pour moi et je tentais d'ajouter la mise en page d'abord.