====== Gitterlayout ====== Mittels ''QGridLayout'' können wir Widgets in einem Gitter ausrichten. Dafür können wir in der ''addWidget()''-Methode zusätzlich die Spalte und Zeile des Widgets angeben: void QGridLayout::addWidget( QWidget *widget, int row, int column, Qt::Alignment alignment = Qt::Alignment() ) **widget**: Das einzufügende Widget \\ **row**: Zeile, in die das Widget eingefügt werden soll (beginnend bei 0)\\ **column**: Spalte, in die das Widget eingefügt werden soll (beginnend bei 0)\\ **alignment**: Ausrichtung des Widgets innerhalb der Zelle; Gibt man keinen Wert an, füllt das Widget die ganze Zelle. Wir können Widgets aber auch auf mehrere Zellen ausdehnen: void QGridLayout::addWidget( QWidget *widget, int fromRow, int fromColumn, int rowSpan, int columnSpan, Qt::Alignment alignment = Qt::Alignment() ) **widget**: Das einzufügende Widget \\ **fromRow**: Startzeile des Widgets (beginnend bei 0) \\ **fromColumn**: Startspalte des Widgets (beginnend bei 0) \\ **rowSpan**: Anzahl der ganzen Zeilen über das sich das Widget ausdehnt (bei 0 nur die aktuelle Zelle) \\ **columnSpan**: Anzahl der ganzen Spalten über das sich das Widget ausdehnt (bei 0 nur die aktuelle Zelle) \\ **alignment**: Ausrichtung des Widgets innerhalb der Zelle; Gibt man keinen Wert an füllt das Widget die ganze Zelle. Die Dimensionen des Layouts können wir mit ''rowCount()'' und ''columnCount()'' abfragen: int QGridLayout::columnCount() const int QGridLayout::rowCount() const Beide Methoden geben erwartungsgemäß die Anzahl der Zeilen bzw. Spalten zurück. Mit den genannten Funktionen sollte es kein Problem sein ein Gitter aus Buttons mit einer über die erste Zeile ausgedehnten Überschrift zu erstellen. Die erste Spalte soll dabei frei gelassen werden. Der Text der Buttons ist die jeweilige Position im Layout. #include #include #include #include #include int main( int argc, char *argv[] ) { QApplication app( argc, argv ); QWidget w; QGridLayout *layout; // Layout anlegen layout = new QGridLayout(); // Label mit Überschrift dehnt sich über die ganze erste Zeile aus layout->addWidget( new QLabel( "

Raster aus Buttons

" ), 0, 0, 1, 0 ); // 4*4-Matrix aus Buttons mit den Zellen-Koordinaten als Text erstellen // Zeile 0 wird bereits von der Überschrift belegt, deswegen wird bei 1 begonnen for( int i = 1; i < 5; i++ ) { // Erste Spalte (Index 0) bleibt frei, deswegen wird wieder bei 1 begonnen for( int j = 1; j < 5; j++ ) { // Neuen Button an der Position i/j einfügen layout->addWidget( new QPushButton( QString( "%1/%2" ) .arg( QString::number( i ), QString::number( j ) ) ), i, j ); } } // Layout anwenden und Widget anzeigen w.setWindowTitle( "GridLayout" ); w.setLayout( layout ); w.show(); return app.exec(); }
{{:frameworks:qt:gui:basic:layouts:gridlayout.png|}}