programming - Qt Layout en QMainWindow
qt tutorial (4)
QMainWindow
con QtCreator''s
diseñador QtCreator''s
. Consiste en el widget central predeterminado (un QWidget
) que contiene un QVBoxLayout
con todos los demás widgets. Ahora todo lo que quiero es que el QVBoxLayout
ocupe automáticamente todo el espacio rectangular del widgets central.
¿Cómo puedo hacer esto? No encontré ninguna propiedad utilizable ni en las propiedades de widgets centrales ni en las de QVBoxLayout''s
.
Agregue al menos un widget en su MainWindow
. Luego seleccione su ventana haciendo clic en ella y haga clic en el botón VerticalLayout
en la parte superior de QTCreator
. Usted Vertical Layout se agrega automáticamente al widget central y llena toda la superficie.
Esto ya está respondido, pero personalmente prefiero mantener todos los elementos y diseños de control agregados manualmente al formulario. No agrego controles en los archivos de clase, simplemente conecto las señales / ranuras para ocultar / mostrar widgets relevantes para la lógica en la clase, dentro de la clase.
Para agregar manualmente un diseño a cualquier widget, primero debe agregar al menos un widget / control secundario. Eso no estaba del todo claro para mí y estaba tratando de agregar el diseño primero.
No es necesario crear un QVBoxLayout
manualmente. Simplemente selecciona tu QWidget
central y presiona un botón make-layout.
Si desea hacerlo con código en lugar de usar QtCreator
, puede establecer el diseño en un QWidget
y luego configurar el QWidget
como el widget central de la ventana principal como este:
#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);
}