Formularlayout

QFormLayout erlaubt es uns, sehr schnell zweispaltige Formulare zu erstellen, die wir sonst aufwändig mit Labels und horizontalen bzw. vertikalen Layouts zusammenbasteln müssten. Durch die Methode addRow() können wir ein Widget mit einem vorangestellten Text in das Formular einfügen. Hier ein Überblick über die wichtigsten Formen dieser vielfach überladenen Methode:

void QFormLayout::addRow( const QString& labelText, QWidget *field )

labelText: Text der vor dem Widget (zweiter Parameter) steht.
field: Widget das eingefügt werden soll

Es kann auch ein komplettes Layout als zweiter Parameter übergeben werden:

void QFormLayout::addRow( const QString& labelText, QLayout *field )

Das Ergebnis ist das gleiche wie vorhin, nur, dass statt eines einzelnen Widgets ein komplettes Layout eingefügt wird.

Widgets können auch beide Spalten in Anspruch nehmen, dazu lassen wir einfach den ersten Parameter weg:

void QFormLayout::addRow( QWidget *widget )

Damit können wir schon ein Formular zur Abfrage von persönlichen Daten erstellen:

#include <QApplication>
#include <QWidget>
#include <QFormLayout>
#include <QPushButton>
#include <QLineEdit>
 
int main( int argc, char *argv[] )
{
  QApplication app( argc, argv );
  QWidget w;
  QFormLayout *formLayout;
  QPushButton *button;
  QLineEdit *firstNameEdit, *lastNameEdit, *addressEdit, *phoneEdit;
 
  formLayout = new QFormLayout();
  button = new QPushButton( "Absenden" );
  firstNameEdit = new QLineEdit();
  lastNameEdit = new QLineEdit();
  addressEdit = new QLineEdit();
  phoneEdit = new QLineEdit();
 
  formLayout->addRow( "Vorname:", firstNameEdit );
  formLayout->addRow( "Nachname:", lastNameEdit );
  formLayout->addRow( "Adresse:", addressEdit );
  formLayout->addRow( "Telefonnummer:", phoneEdit );
  formLayout->addRow( button );
 
  QObject::connect( button, &QPushButton::clicked, &app, &QApplication::quit );
 
  w.setWindowTitle( "FormLayout" );
  w.setLayout( formLayout );
  w.show();
 
  return app.exec();
}