Código
#include <QApplication> #include <QHBoxLayout> #include <QVBoxLayout> #include <QLabel> #include <QLineEdit> #include <QPushButton> #include <QDialog> int main(int argc, char *argv[]) { QApplication app(argc, argv); QDialog ventana; QHBoxLayout *layoutUsuario = new QHBoxLayout; QHBoxLayout *layoutContrasenia = new QHBoxLayout; QHBoxLayout *layoutBotones = new QHBoxLayout; QVBoxLayout *layoutPrincipal = new QVBoxLayout(&ventana); QLabel *etiquetaUsuario = new QLabel("Usuario"); QLabel *etiquetaContrasenia = new QLabel("Password"); QLineEdit *campoUsuario = new QLineEdit; QLineEdit *campoContrasenia = new QLineEdit; QPushButton *botonAceptar = new QPushButton("Aceptar"); QPushButton *botonCancelar = new QPushButton("Cancelar"); layoutUsuario->addWidget(etiquetaUsuario); layoutUsuario->addWidget(campoUsuario); layoutContrasenia->addWidget(etiquetaContrasenia); layoutContrasenia->addWidget(campoContrasenia); layoutBotones->addStretch(); layoutBotones->addWidget(botonAceptar); layoutBotones->addWidget(botonCancelar); layoutPrincipal->addLayout(layoutUsuario); layoutPrincipal->addLayout(layoutContrasenia); layoutPrincipal->addLayout(layoutBotones); ventana.setWindowTitle(QObject::trUtf8("Iniciar Sesión")); ventana.show(); return app.exec(); }
Genera algo tal que así:
Mi duda es la siguiente; no entiendo bien bien el funcionamiento de este código ya que lo que hace es crear una tabla de 3x3 donde en el primero hay un label con un textbox, el segundo lo mismo y el tercero dos botones. Pero quedan ordenadas de manera que no he definido bien bien, según lo que puedo leer, creo que lo ordena por layouts, cada layout es una nueva linea que tu le iras atribuyendo objectos de cualquier tipo:
Código
QHBoxLayout *layoutUsuario = new QHBoxLayout; QHBoxLayout *layoutContrasenia = new QHBoxLayout; QHBoxLayout *layoutBotones = new QHBoxLayout;
Y luego como he dicho le atribuyo:
Código
layoutUsuario->addWidget(etiquetaUsuario); layoutUsuario->addWidget(campoUsuario); layoutContrasenia->addWidget(etiquetaContrasenia); layoutContrasenia->addWidget(campoContrasenia); layoutBotones->addStretch(); layoutBotones->addWidget(botonAceptar); layoutBotones->addWidget(botonCancelar);
Entonces lo digo bien o no? xD es cierto que se ordena mediante los layouts? Es algo que en este ejemplo no me ha quedado muy claro ya que estaba acostumbrado a hacerlo de manera tabuladora...
Código:
layout->addWidget(boton1, 0, 0);
layout->addWidget(boton2, 1, 1);
layout->addWidget(boton3, 3, 3);
...que es como creo que es como queda mejor xD
Saludos!!