2011-06-23 22 views
5

Quiero poner un widget en el lado derecho de un QHBoxLayout, y los otros espacios deben expandir el lado izquierdo. Establecí SizePolicy del widget en Expanding, pero no es válido. ¿Alguien podría ofrecer algo de ayuda? Gracias.Ampliar un diseño de Qt: cómo colocar un widget en el lado derecho y dejar que el otro widget se llene por completo a la izquierda?

Código está aquí:

QHBoxLayout* tmplayout = new QHBoxLayout(this); 
tmplayout->setContentsMargins(0, 0, 0, 0); 
lineEdit->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Ignored); 
tmplayout->addWidget(lineEdit, 0, Qt::AlignRight); 
tmplayout->addWidget(pushButton, 0, Qt::AlignRight); 

LineEdit debe expandirse.

+0

¿Alguien podría dar un ejemplo similar, por favor? Estoy realmente agotado. – user3294

+0

Por favor, publique el código con el que tiene problemas. – Gerstmann

Respuesta

6

Pruebe a cambiar:

tmplayout->addWidget(lineEdit, 0, Qt::AlignRight); 
tmplayout->addWidget(pushButton, 0, Qt::AlignRight); 

Para:

tmplayout->addWidget(lineEdit); 
tmplayout->addWidget(pushButton); 

Cuando se trata de diseños sencillos como éste, no hay necesidad de especificar las alineaciones o estirar los factores de forma explícita.

Si desea forzar pulsador para tamaño específico, puede utilizar setMinimumSize, setMaximumSize y setFixedSize

Saludos

+0

Esto funciona, gracias. – user3294

0

Pruebe fixed o minimum políticas de tamaño. Incluso es posible que desee arreglar el ancho máximo.

1

No estoy seguro si entiendo su problema correctamente, pero a lo mejor que hay que buscar en QSpacerItem. Si eso no es útil, quizás pueda hacer una maqueta aproximada en Qt-Creator y publicar las capturas de pantalla (un ejemplo que muestra aproximadamente lo que tiene, un ejemplo que muestra lo que quiere)

+0

Quiero decir, ¿cómo podría dejar que lineEdit llene la parte izquierda del diseño? ¿Entiendes ahora? – user3294

+0

Creo que ExplodingRat tiene la respuesta para usted, deje los valores para strech y alineación o establezca valores útiles. http://doc.qt.nokia.com/4.7/qboxlayout.html#addWidget – bjoernz

+0

Sí, así es, ¡gracias a todos! – user3294

2

Para los widgets que desee para estar a la izquierda y expandir, intente simplemente agregarlos antes de los de la derecha, y agregue un 1 para su factor de estiramiento. Por ejemplo,

tmplayout->addWidget(exampleWidget, 1); 

Entonces, usted podría simplemente agregar los widgets que desea estar en el lado derecho después de los de la izquierda, utilizando simplemente:

tmplayout->addWidget(lineEdit); 
tmplayout->addWidget(pushbutton); 

Esto automáticamente les dará un tramo factor de de 0.

Puesto que el factor de estiramiento de exampleWidget en este ejemplo es 1 que es mayor que el valor predeterminado 0, exampleWidget ampliará; y, como lo agregas antes que los demás, estará a la izquierda.

+0

¡Gracias, funciona! – user3294

Cuestiones relacionadas