2012-03-31 4 views
2

vereinfachen Code-Schnipsel Folgende:QBoxLayout verschraubt QFormLayout?

#include <QtGui> 

int main(int argc, char **argv) 
{ 
QApplication app(argc, argv); 
QWidget *window = new QWidget(); 
QFormLayout *form = new QFormLayout(); 

// first row 
form->addRow("First row:", new QLineEdit()); 

// second row 
QWidget *hbox_widget = new QWidget(); 
QBoxLayout *hbox = new QHBoxLayout(); 
hbox->addWidget(new QLineEdit()); 
hbox_widget->setLayout(hbox); 
form->addRow("Second row:", hbox_widget); 

window->setLayout(form); 
window->show(); 
return app.exec(); 
} 

Hier habe ich eine QFormLayout mit zwei Zeilen zu erstellen: die ersten ein klassisches Beispiel für label + Eingabe-Widgets ist, ist die zweite fast das gleiche, mit der Ausnahme, dass der Eingang Widget ist in einem QHBoxLayout (+ containing widget) "boxed".

result of above code

Aus irgendeinem Grund scheint dies die „vertikale Zentrierung“ des Eingangs Widget zuzuschrauben (in der 2. Reihe). Wie kann ich einem Formularlayout ein Widget hinzufügen, das andere Elemente in einem Hboxlayout enthält, und sie trotzdem vertikal zentrieren?

Antwort

3

Stellen Sie die Inhalte Ränder des QHBoxLayout auf 0:

QBoxLayout *hbox = new QHBoxLayout(); 
hbox->setContentsMargins(0, 0, 0, 0); 
Verwandte Themen