====== Stapellayout ====== Die Klasse ''QStackedLayout'' ermöglicht das Erstellen von Stapellayouts. Mittels Stapellayouts können wir recht einfach zwischen Ansichten wechseln. Die Widgets werden nacheinander in das Stapellayout eingefügt und durch einen Slot mit einem Auswahlwidget (z.B. ''QComboBox'') verbunden. Je nach Auswahl wird ein bestimmtes Widget des Stacks angezeigt. Man kann sich das ganze wie ein Buch vorstellen. Blättert man um, kommt man zu einer neuen Ansicht. Die alte ist zwar nicht verschwunden, aber momentan nicht sichtbar. Im folgenden Beispiel bietet uns eine Combobox die Möglichkeit zwischen einem Button, einem Texteingabefeld, einer Checkbox und einer Datumsanzeige zu wechseln: #include #include #include #include #include #include #include #include int main( int argc, char *argv[] ) { QApplication app( argc, argv ); // Unser Hauptwidget, auf dem alle anderen angezeigt werden QWidget w; // Dient zur Auswahl der Widgets QComboBox *comboBox; // Widgets, die auf das Stapellayout gelegt werden QTextEdit *textEdit; QCheckBox *checkBox; QTimeEdit *timeEdit; // Vertikales Layout um die Combobox und das Stapellayout auf dem // Hauptwidget zu platzieren QVBoxLayout *vLayout; // Stapellayout, das alle Widgets enthält, jedoch nur eines anzeigt QStackedLayout *stackedLayout; // Widgets und Layouts anlegen stackedLayout = new QStackedLayout(); vLayout = new QVBoxLayout(); timeEdit = new QTimeEdit(); checkBox = new QCheckBox( "CheckBox" ); textEdit = new QTextEdit(); comboBox = new QComboBox(); // Wird in der Combobox die Auswahl verändert, // zeigt das Stapellayout das entsprechende Widget an QObject::connect( comboBox, static_cast( &QComboBox::activated ), stackedLayout, &QStackedLayout::setCurrentIndex ); // Widgets zum Stapellayout hinzufügen stackedLayout->addWidget( textEdit ); stackedLayout->addWidget( checkBox ); stackedLayout->addWidget( timeEdit ); // Auswahlmöglichkeiten zur Combobox hinzufügen comboBox->addItem( "TextEdit" ); comboBox->addItem( "CheckBox" ); comboBox->addItem( "TimeEdit" ); // Combobox und Stapellayout in ein Layout packen und auf // das Hauptwidget anwenden vLayout->addWidget( comboBox ); vLayout->addLayout( stackedLayout ); w.setLayout( vLayout ); w.setWindowTitle( "Stapellayout" ); // Passende Größe für das Widget setzen und Widget anzeigen w.resize( 200, 140 ); w.show(); return app.exec(); } Je nach der Auswahl in der Combobox, wird ein anderes Widget angezeigt: \\ {{:frameworks:qt:gui:basic:layouts:stackedlayout_checkbox.png?|}} {{:frameworks:qt:gui:basic:layouts:stackedlayout_textedit.png?|}} {{:frameworks:qt:gui:basic:layouts:stackedlayout_timeedit.png?|}}