2010-04-09 11 views

Respuesta

4

QWidget ha incorporado soporte para diseños a través de las funciones layout() y setLayout(...). El objeto de disposición controla el posicionamiento de diferentes widgets secundarios que se pueden agregar al diseño. Además, se asegura de dimensionar correctamente su widget padre según el constraints especificado. Si el diseño aún no tiene un widget principal, tan pronto como el diseño se adjunte a un widget con setLayout(), se establecerá el tamaño de ese widget principal.

Pero, algunos widgets son más como un administrador de diseño que un widget, como QSplitter y . Considere, por ejemplo, QSplitter. Aunque es un widget único, presenta dos áreas diferentes con las que se puede trabajar. En este caso, un único administrador de disposición para dos áreas diferentes realmente no tiene sentido. Al igual que QSplitter, QTabWidget tiene algunos comportamientos que hacen que un solo diseño no solo sea innecesario sino no útil.

Creo que es la combinación anterior de diseño y widget lo que hace que la separación entre el diseño y el widget a veces resulte confusa.

+0

Si usa el idioma del patrón de diseño Modelo-vista-controlador. ¿Es correcto decir que el "diseño" es el controlador? o ¿no puedes relacionar esto con el patrón de diseño "modelo-vista-controlador"? –

2

No, un diseño no es un widget o un contenedor. Un diseño es más como un "ayudante" que está conectado a una ventana y determina el mejor lugar para colocar cada widget.

Este ejemplo de la documentación de Qt debería ayudar (http://qt.nokia.com/doc/4.2/layout.html):

QWidget *window = new QWidget; 
QPushButton *button1 = new QPushButton("One"); 
QPushButton *button2 = new QPushButton("Two"); 
QPushButton *button3 = new QPushButton("Three"); 
QPushButton *button4 = new QPushButton("Four"); 
QPushButton *button5 = new QPushButton("Five"); 

QHBoxLayout *layout = new QHBoxLayout; 
layout->addWidget(button1); 
layout->addWidget(button2); 
layout->addWidget(button3); 
layout->addWidget(button4); 
layout->addWidget(button5); 

window->setLayout(layout); 
window->show(); 
3

QLayout s son controladores de distribución. Gestionan el posicionamiento y el cambio de tamaño de widgets dentro de un widget padre. De los documentos:

Los diseños son una forma elegante y flexible de organizar automáticamente los widgets infantiles dentro de su contenedor. Cada widget informa sus requisitos de tamaño al diseño a través de las propiedades sizeHint y sizePolicy, y el diseño distribuye el espacio disponible en consecuencia.

Por ejemplo, establecer el diseño de un widget en QHBoxLayout dará como resultado que sus widgets secundarios se distribuyan horizontalmente.

Puedes leer más al respecto here.

Cuestiones relacionadas