2010-08-31 10 views
9

Quiero colocar algunos widgets en un widget principal en algunos lugares aleatorios, como un botón en Point (10,10) y otro en (15,40), etc. Cómo lograr esto QGridLayout está empujando todo al estilo de columna de fila. Pero quiero poner los widgets donde quiera, ¿Alguien puede ayudarme?qt - widget - posicionamiento

Respuesta

19

Si realmente desea establecer posiciones absolutas, ignoraría el uso de un diseño en conjunto. Puede establecer manualmente las posiciones de los elementos utilizando la función de movimiento o la función setGeometry.

QWidget *parent = new QWidget(); 
parent->resize(400, 400); 

QPushButton *buttonA = new QPushButton(parent); 
buttonA->setText("First Button"); 
buttonA->move(10, 10); 

QPushButton *buttonB = new QPushButton(parent); 
buttonB->setText("Second Button"); 
buttonB->move(15, 40); 

Nota al margen: yo evitaría el establecimiento de posiciones absolutas de los elementos en Qt. ¿Por qué? Bueno, Qt intenta ser una biblioteca GUI independiente de la plataforma. En diferentes plataformas, muchas cosas de la pantalla pueden cambiar (es decir, el tamaño de la fuente del texto en los botones), por lo que el tamaño de los botones reales puede variar para adaptarse a tamaños de letra grandes o pequeños. Esto puede desprenderse de sus botones meticulosamente espaciados si usa posiciones absolutas como en el ejemplo anterior.

Si usa diseños, se pueden evitar botones superpuestos o que se caen del borde de la ventana.

+0

Gracias, hombre, funciona – prabhakaran

3

Puede ver mi respuesta para el botón de superposición en QT: Qt Widget Overlays. Esto puede ayudarte a lograr lo que quieres.

+0

+1, agregó un comentario sobre cómo, p. Ej. alinear correctamente los widgets. –

Cuestiones relacionadas