Qt-Layout auf QMainWindow
-
19-09-2019 - |
Frage
Ich entwarf eine QMainWindow
mit QtCreator's
Designer. Es besteht aus der Standard-Zentral Widget (a QWidget
), die eine QVBoxLayout
mit allen anderen Widgets in die es enthält. Jetzt alles, was ich will, ist, dass der QVBoxLayout
nimmt automatisch die gesamte zentralen Widgets Raum Rechteck.
Wie kann ich das tun? Ich habe keine nutzbare Eigenschaft finden weder in den zentralen Widgets Eigenschaften noch die QVBoxLayout's
diejenigen.
Lösung
Sie müssen keine QVBoxLayout
manuell erstellen. Wählen Sie einfach Ihre zentrale QWidget
und drücken Sie eine Make-Layout-Taste.
Andere Tipps
Wenn Sie es mit dem Code tun wollen stattdessen QtCreator
zu verwenden, können Sie das Layout in einem QWidget
gesetzt und dann den QWidget
als zentrales Widget des Hauptfensters wie folgt aus:
#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);
}
Fügen Sie mindestens ein Widget auf dem MainWindow
. Dann wählen Sie Ihre Fenster indem Sie darauf klicken und klicken Sie auf den VerticalLayout
Knopf an der Spitze der QTCreator
. Sie Vertikales Layout wird automatisch an das zentrale Widget hinzugefügt und füllt die ganze Fläche.
Dies ist bereits beantwortet, aber ich persönlich bevor alle Bedienelemente zu halten und Layouts manuell in das Formular eingefügt. Ich füge keine Kontrollen in den Klassendateien, ich nur die Signale / Slots Haken bis zu verstecken / show-Widgets, die für die Logik in der Klasse, in der Klasse.
Um manuell ein Layout zu jedem Widget hinzufügen Sie zunächst mindestens ein Kind-Widget / Steuerung hinzufügen. Das war mir nicht ganz klar und ich habe versucht, das Layout zuerst hinzuzufügen.