Ähnlich wie QGroupBox
ist QSplitter
keine echte Layout-Klasse. Durch das Ziehen des Splitters können wir die Größe von Widgets dynamisch verändern. Widgets können wie von Layouts gewohnt mit der Methode addWidget()
hinzugefügt werden.
Mit der Methode setCollapsible()
können wir festlegen, ob die Größe von Widgets auf 0 reduziert werden kann:
void QSplitter::setCollapsible( int index, bool collapse )
index: Index des Widgets (beginnend bei 0)
collapse: Ist dieser Parameter wahr, kann das Widget auf Größe 0 verkleinert werden.
Nun wollen wir drei vertikal angeordnete QTextEdit
-Widgets mit dynamischer Größe (aber > 0) erstellen:
#include <QApplication> #include <QWidget> #include <QTextEdit> #include <QSplitter> #include <QVBoxLayout> int main( int argc, char *argv[] ) { QApplication app( argc, argv ); QWidget w; QTextEdit *textEdit1, *textEdit2, *textEdit3; QSplitter *splitter; QVBoxLayout *layout; // Widgets und Layout erzeugen textEdit1 = new QTextEdit(); textEdit2 = new QTextEdit(); textEdit3 = new QTextEdit(); splitter = new QSplitter( Qt::Vertical ); layout = new QVBoxLayout(); // Widgets zum Splitter hinzufügen splitter->addWidget( textEdit1 ); splitter->addWidget( textEdit2 ); splitter->addWidget( textEdit3 ); // Widgets können nicht auf 0 verkleinert werden splitter->setCollapsible( 0, false ); splitter->setCollapsible( 1, false ); splitter->setCollapsible( 2, false ); layout->addWidget( splitter ); w.setWindowTitle( "Splitter" ); w.setLayout( layout ); w.resize( 500, 500 ); w.show(); return app.exec(); }
Nun bekommen wir drei QTextEdit
-Widgets deren vertikale Größe wir durch Ziehen am Splitter ändern können: