2010-08-31 26 views
9

Voglio posizionare alcuni widget in un widget padre in alcuni punti casuali, come un pulsante a Punto (10,10) e un altro a (15,40), ecc. Come ottenere questo. QGridLayout sta spingendo tutto in stile colonna riga. Ma voglio mettere i widget dove voglio, qualcuno può aiutarmi?qt - widget - posizionamento

risposta

19

Se si in realtà si desidera impostare posizioni assolute, vorrei ignorare utilizzando un layout tutti insieme. È possibile impostare manualmente le posizioni degli elementi utilizzando la funzione move o la funzione 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 a margine: Vorrei evitare di impostare posizioni assolute di elementi in Qt. Perché? Bene, Qt cerca di essere una libreria GUI indipendente dalla piattaforma. Su piattaforme diverse, molte cose di visualizzazione possono cambiare (ad esempio la dimensione del carattere del testo nei pulsanti) in modo che le dimensioni dei pulsanti effettivi possano variare per adattarsi a caratteri di dimensioni grandi o minori. Questo può buttare via i pulsanti meticolosamente distanziati in cui usi le posizioni assolute come nell'esempio sopra.

Se si utilizzano layout, è possibile evitare pulsanti sovrapposti o pulsanti che cadono dal bordo della finestra.

+0

Grazie amico, funziona – prabhakaran

3

È possibile visualizzare la risposta per il pulsante di sovrapposizione in QT: Qt Widget Overlays. Questo può aiutarti a ottenere ciò che desideri.

+0

+1, aggiunto un commento lì come ad es. allineare i widget a destra manualmente. –