Ä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 einfach mit der Methode addWidget()
, die das Widget als einzigen Parameter erhält, 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:
// main.cpp #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( "SplitterWidget" ); 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: