QGridLayout Class
Die Klasse „QGridLayout“ ordnet Widgets in einem Raster an. Mehr...
| Überschrift: | #include <QGridLayout> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Widgets) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
| qmake: | QT += widgets |
| Erbt von: | QLayout |
Eigenschaften
- horizontalSpacing : int
- verticalSpacing : int
Öffentliche Funktionen
| QGridLayout(QWidget *parent = nullptr) | |
| virtual | ~QGridLayout() |
| void | addItem(QLayoutItem *item, int row, int column, int rowSpan = 1, int columnSpan = 1, Qt::Alignment alignment = Qt::Alignment()) |
| void | addLayout(QLayout *layout, int row, int column, Qt::Alignment alignment = Qt::Alignment()) |
| void | addLayout(QLayout *layout, int row, int column, int rowSpan, int columnSpan, Qt::Alignment alignment = Qt::Alignment()) |
| void | addWidget(QWidget *widget, int row, int column, Qt::Alignment alignment = Qt::Alignment()) |
| void | addWidget(QWidget *widget, int fromRow, int fromColumn, int rowSpan, int columnSpan, Qt::Alignment alignment = Qt::Alignment()) |
| QRect | cellRect(int row, int column) const |
| int | columnCount() const |
| int | columnMinimumWidth(int column) const |
| int | columnStretch(int column) const |
| void | getItemPosition(int index, int *row, int *column, int *rowSpan, int *columnSpan) const |
| int | horizontalSpacing() const |
| QLayoutItem * | itemAtPosition(int row, int column) const |
| Qt::Corner | originCorner() const |
| int | rowCount() const |
| int | rowMinimumHeight(int row) const |
| int | rowStretch(int row) const |
| void | setColumnMinimumWidth(int column, int minSize) |
| void | setColumnStretch(int column, int stretch) |
| void | setHorizontalSpacing(int spacing) |
| void | setOriginCorner(Qt::Corner corner) |
| void | setRowMinimumHeight(int row, int minSize) |
| void | setRowStretch(int row, int stretch) |
| void | setVerticalSpacing(int spacing) |
| int | verticalSpacing() const |
Neu implementierte öffentliche Funktionen
| virtual int | count() const override |
| virtual Qt::Orientations | expandingDirections() const override |
| virtual bool | hasHeightForWidth() const override |
| virtual int | heightForWidth(int w) const override |
| virtual void | invalidate() override |
| virtual QLayoutItem * | itemAt(int index) const override |
| virtual QSize | maximumSize() const override |
| virtual int | minimumHeightForWidth(int w) const override |
| virtual QSize | minimumSize() const override |
| virtual void | setGeometry(const QRect &rect) override |
| virtual void | setSpacing(int spacing) override |
| virtual QSize | sizeHint() const override |
| virtual int | spacing() const override |
| virtual QLayoutItem * | takeAt(int index) override |
Neu implementierte geschützte Funktionen
| virtual void | addItem(QLayoutItem *item) override |
Ausführliche Beschreibung
QGridLayout nimmt den ihm zur Verfügung gestellten Platz (durch sein übergeordnetes Layout oder durch die Funktion ` parentWidget()`) ein, unterteilt ihn in Zeilen und Spalten und ordnet jedes von ihm verwaltete Widget der richtigen Zelle zu.
Spalten und Zeilen verhalten sich identisch; wir werden hier auf Spalten eingehen, es gibt jedoch entsprechende Funktionen für Zeilen.
Jede Spalte verfügt über eine Mindestbreite und einen Dehnungsfaktor. Die Mindestbreite ist der größte Wert aus der mit ` setColumnMinimumWidth()` festgelegten Breite und der Mindestbreite jedes Widgets in dieser Spalte. Der Dehnungsfaktor wird mit ` setColumnStretch()` festgelegt und bestimmt, wie viel des verfügbaren Platzes die Spalte über ihr erforderliches Minimum hinaus erhält.
Normalerweise wird jedes verwaltete Widget oder Layout mithilfe von ` addWidget()` in eine eigene Zelle eingefügt. Es ist auch möglich, dass ein Widget mehrere Zellen einnimmt, indem die Überladungen von ` addItem()` und ` addWidget()` für die Zeilen- und Spaltenüberschreitung verwendet werden. In diesem Fall ermittelt QGridLayout selbst, wie die Größe auf die Spalten/Zeilen verteilt wird (basierend auf den Stretch-Faktoren).
Um ein Widget aus einem Layout zu entfernen, rufen Sie ` removeWidget()` auf. Der Aufruf von ` QWidget::hide()` für ein Widget entfernt das Widget ebenfalls effektiv aus dem Layout, bis ` QWidget::show()` aufgerufen wird.
Diese Abbildung zeigt einen Ausschnitt aus einem Dialogfeld mit einem Raster aus fünf Spalten und drei Zeilen (das Raster ist in Magenta überlagert dargestellt):

Die Spalten 0, 2 und 4 in diesem Dialogfragment bestehen aus einem „ QLabel “, einem „ QLineEdit “ und einem „QListBox“. Die Spalten 1 und 3 sind Platzhalter, die mit „ setColumnMinimumWidth()“ erstellt wurden. Zeile 0 besteht aus drei „ QLabel “-Objekten, Zeile 1 aus drei „ QLineEdit “-Objekten und Zeile 2 aus drei „QListBox“-Objekten. Wir haben Platzhalter-Spalten (1 und 3) verwendet, um den richtigen Abstand zwischen den Spalten zu erzielen.
Beachten Sie, dass die Spalten und Zeilen nicht gleich breit oder hoch sind. Wenn Sie möchten, dass zwei Spalten dieselbe Breite haben, müssen Sie deren Mindestbreiten und Dehnungsfaktoren selbst auf denselben Wert setzen. Dies geschieht mithilfe von ` setColumnMinimumWidth()` und ` setColumnStretch()`.
Wenn das `QGridLayout` nicht das oberste Layout ist (d. h. nicht den gesamten Bereich des Widgets und dessen untergeordnete Elemente verwaltet), müssen Sie es beim Erstellen zu seinem übergeordneten Layout hinzufügen, jedoch bevor Sie irgendwelche Aktionen damit durchführen. Die übliche Vorgehensweise zum Hinzufügen eines Layouts ist der Aufruf von ` addLayout()` auf dem übergeordneten Layout.
Sobald Sie Ihr Layout hinzugefügt haben, können Sie damit beginnen, Widgets und andere Layouts mithilfe von ` addWidget()`, ` addItem()` und ` addLayout()` in die Zellen Ihres Rasterlayouts einzufügen.
QGridLayout verfügt außerdem über zwei Randbreiten: den Inhaltsrand ( contents margin ) und den Abstandsrand ( spacing()). Der Inhaltsrand ist die Breite des reservierten Platzes entlang jeder der vier Seiten des QGridLayouts. Der Abstandsrand ( spacing()) ist die Breite des automatisch zugewiesenen Abstands zwischen benachbarten Feldern.
Die Standardwerte für den Inhaltsrand werden durch den „ style “ bereitgestellt. Der von Qt-Stilen festgelegte Standardwert beträgt 9 für untergeordnete Widgets und 11 für Fenster. Der Abstand entspricht standardmäßig der Randbreite eines Layouts der obersten Ebene oder der des übergeordneten Layouts.
Siehe auch „ QBoxLayout“ , „ QStackedLayout “, „Layout-Verwaltung“ und „Beispiel für grundlegende Layouts“.
Dokumentation zur Eigenschaft
horizontalSpacing : int
Diese Eigenschaft legt den Abstand zwischen nebeneinander angeordneten Widgets fest
Wird kein Wert explizit festgelegt, wird der horizontale Abstand des Layouts vom übergeordneten Layout oder aus den Stileinstellungen des übergeordneten Widgets übernommen.
Zugriffsfunktionen:
| int | horizontalSpacing() const |
| void | setHorizontalSpacing(int spacing) |
Siehe auch „ verticalSpacing“ , „ QStyle::pixelMetric()“ und „ PM_LayoutHorizontalSpacing “.
verticalSpacing : int
Diese Eigenschaft legt den Abstand zwischen Widgets fest, die übereinander angeordnet sind
Wird kein Wert explizit festgelegt, wird der vertikale Abstand des Layouts vom übergeordneten Layout oder aus den Stileinstellungen des übergeordneten Widgets übernommen.
Zugriffsfunktionen:
| int | verticalSpacing() const |
| void | setVerticalSpacing(int spacing) |
Siehe auch „ horizontalSpacing“ , „ QStyle::pixelMetric()“ und „ PM_LayoutHorizontalSpacing “.
Dokumentation zu den Mitgliedsfunktionen
[explicit] QGridLayout::QGridLayout(QWidget *parent = nullptr)
Erstellt ein neues QGridLayout mit dem übergeordneten Widget „ parent “. Das Layout besteht anfangs aus einer Zeile und einer Spalte und wird erweitert, sobald neue Elemente eingefügt werden.
Das Layout wird direkt als oberstes Layout für ` parent` festgelegt. Für ein Widget kann es nur ein oberstes Layout geben. Es wird von ` QWidget::layout()` zurückgegeben.
Wenn ` parent ` gleich ` nullptr` ist, müssen Sie dieses Rasterlayout in ein anderes Layout einfügen oder es mithilfe von ` QWidget::setLayout()` als Layout eines Widgets festlegen.
Siehe auch ` QWidget::setLayout()`.
[virtual noexcept] QGridLayout::~QGridLayout()
Löst das Rasterlayout auf. Die Geometrieverwaltung wird beendet, wenn es sich um ein Raster der obersten Ebene handelt.
Die Widgets des Layouts werden nicht zerstört.
[override virtual protected] void QGridLayout::addItem(QLayoutItem *item)
Implementiert: ` QLayout::addItem` (`QLayoutItem *item`).
void QGridLayout::addItem(QLayoutItem *item, int row, int column, int rowSpan = 1, int columnSpan = 1, Qt::Alignment alignment = Qt::Alignment())
Fügt item an der Position row, column hinzu, das sich über rowSpan Zeilen und columnSpan Spalten erstreckt, und richtet es gemäß alignment aus. Wenn rowSpan und/oder columnSpan den Wert -1 hat, erstreckt sich das Element bis zum unteren bzw. rechten Rand. Das Layout übernimmt die Verantwortung für item.
Warnung: VerwendenSie diese Funktion nicht, um untergeordnete Layouts oder untergeordnete Widget-Elemente hinzuzufügen. Verwenden Sie stattdessen „ addLayout()“ oder „ addWidget()“.
void QGridLayout::addLayout(QLayout *layout, int row, int column, Qt::Alignment alignment = Qt::Alignment())
Platziert das Widget „ layout “ an der Position (row, column) im Raster. Die Position oben links ist (0, 0).
Die Ausrichtung wird durch ` alignment` festgelegt. Die Standardausrichtung ist 0, was bedeutet, dass das Widget die gesamte Zelle ausfüllt.
Ein Ausrichtungswert ungleich Null bedeutet, dass das Layout nicht auf den verfügbaren Platz erweitert werden soll, sondern entsprechend von ` sizeHint()` dimensioniert wird.
layout wird zu einem untergeordneten Element des Rasterlayouts.
void QGridLayout::addLayout(QLayout *layout, int row, int column, int rowSpan, int columnSpan, Qt::Alignment alignment = Qt::Alignment())
Diese Version fügt dem Zellraster das Layout „ layout “ hinzu, das sich über mehrere Zeilen und Spalten erstreckt. Die Zelle beginnt bei „ row “, „ column “ und erstreckt sich über „ rowSpan “ Zeilen und „ columnSpan “ Spalten.
Wenn rowSpan und/oder columnSpan den Wert -1 hat, erstreckt sich das Layout bis zum unteren bzw. rechten Rand.
Dies ist eine überladene Funktion.
void QGridLayout::addWidget(QWidget *widget, int row, int column, Qt::Alignment alignment = Qt::Alignment())
Fügt das angegebene „ widget “ zum Zellraster unter „ row “, „ column “ hinzu. Die Position oben links ist standardmäßig (0, 0).
Die Ausrichtung wird durch ` alignment` festgelegt. Die Standardausrichtung ist 0, was bedeutet, dass das Widget die gesamte Zelle ausfüllt.
void QGridLayout::addWidget(QWidget *widget, int fromRow, int fromColumn, int rowSpan, int columnSpan, Qt::Alignment alignment = Qt::Alignment())
Diese Version fügt das angegebene „ widget “ zum Zellraster hinzu, wobei es sich über mehrere Zeilen und Spalten erstreckt. Die Zelle beginnt bei „ fromRow “, „ fromColumn “ und erstreckt sich über „ rowSpan “ Zeilen und „ columnSpan “ Spalten. Das „ widget “ hat den angegebenen Wert „ alignment “.
Wenn „ rowSpan “ und/oder „ columnSpan “ den Wert -1 hat, erstreckt sich das Widget bis zum unteren bzw. rechten Rand.
Dies ist eine überladene Funktion.
QRect QGridLayout::cellRect(int row, int column) const
Gibt die Geometrie der Zelle mit der Zeile row und der Spalte column im Raster zurück. Gibt ein ungültiges Rechteck zurück, wenn row oder column außerhalb des Rasters liegt.
Warnung: In der aktuellen Version von Qt XML liefert diese Funktion erst dann gültige Ergebnisse, wenn setGeometry() aufgerufen wurde, d. h. nachdem parentWidget() sichtbar ist.
int QGridLayout::columnCount() const
Gibt die Anzahl der Spalten in diesem Raster zurück.
int QGridLayout::columnMinimumWidth(int column) const
Gibt den Spaltenabstand für die Spalte „ column “ zurück.
Siehe auch ` setColumnMinimumWidth()`.
int QGridLayout::columnStretch(int column) const
Gibt den Dehnungsfaktor für die Spalte „ column “ zurück.
Siehe auch ` setColumnStretch()`.
[override virtual] int QGridLayout::count() const
Implementiert neu: ` QLayout::count()` const.
[override virtual] Qt::Orientations QGridLayout::expandingDirections() const
Implementiert erneut: ` QLayout::expandingDirections()` const.
void QGridLayout::getItemPosition(int index, int *row, int *column, int *rowSpan, int *columnSpan) const
Gibt die Positionsinformationen des Elements mit dem angegebenen ` index` zurück.
Die als „ row “ und „ column “ übergebenen Variablen werden mit der Position des Elements im Layout aktualisiert, und die Variablen „ rowSpan “ und „ columnSpan “ werden mit den vertikalen und horizontalen Abständen des Elements aktualisiert.
Siehe auch itemAtPosition() und itemAt().
[override virtual] bool QGridLayout::hasHeightForWidth() const
Implementiert: ` QLayoutItem::hasHeightForWidth()` const.
[override virtual] int QGridLayout::heightForWidth(int w) const
Implementiert neu: ` QLayoutItem::heightForWidth(int) const`.
[override virtual] void QGridLayout::invalidate()
Implementiert: QLayout::invalidate().
[override virtual] QLayoutItem *QGridLayout::itemAt(int index) const
Implementiert: ` QLayout::itemAt(int index) const`.
QLayoutItem *QGridLayout::itemAtPosition(int row, int column) const
Gibt das Layout-Element zurück, das die Zelle (row, column) einnimmt, oder nullptr, wenn die Zelle leer ist.
Siehe auch getItemPosition() und indexOf().
[override virtual] QSize QGridLayout::maximumSize() const
Implementiert: ` QLayout::maximumSize()` const.
[override virtual] int QGridLayout::minimumHeightForWidth(int w) const
Implementiert neu: ` QLayoutItem::minimumHeightForWidth(int w) const`.
[override virtual] QSize QGridLayout::minimumSize() const
Implementiert: ` QLayout::minimumSize()` const.
Qt::Corner QGridLayout::originCorner() const
Gibt die Ecke zurück, die als Ursprung des Rasters dient, d. h. für die Position (0, 0).
Siehe auch „ setOriginCorner()“.
int QGridLayout::rowCount() const
Gibt die Anzahl der Zeilen in diesem Raster zurück.
int QGridLayout::rowMinimumHeight(int row) const
Gibt die für die Zeile „ row “ festgelegte Mindestbreite zurück.
Siehe auch ` setRowMinimumHeight()`.
int QGridLayout::rowStretch(int row) const
Gibt den Stretch-Faktor für die Zeile „ row “ zurück.
Siehe auch ` setRowStretch()`.
void QGridLayout::setColumnMinimumWidth(int column, int minSize)
Legt die Mindestbreite der Spalte „ column “ auf „ minSize “ Pixel fest.
Siehe auch columnMinimumWidth() und setRowMinimumHeight().
void QGridLayout::setColumnStretch(int column, int stretch)
Legt den Stretch-Faktor der Spalte „ column “ auf „ stretch “ fest. Die erste Spalte hat die Nummer 0.
Der Dehnungsfaktor bezieht sich auf die anderen Spalten in diesem Raster. Spalten mit einem höheren Dehnungsfaktor nehmen mehr vom verfügbaren Platz ein.
Der Standard-Dehnungsfaktor ist 0. Wenn der Dehnungsfaktor 0 ist und keine andere Spalte in dieser Tabelle überhaupt wachsen kann, kann die Spalte dennoch wachsen.
Ein alternativer Ansatz besteht darin, mit der Funktion „ addItem()“ und dem Parameter „ QSpacerItem “ Abstände einzufügen.
Siehe auch „ columnStretch()“ und „ setRowStretch()“.
[override virtual] void QGridLayout::setGeometry(const QRect &rect)
Implementiert neu: ` QLayout::setGeometry(const QRect &r)`.
void QGridLayout::setOriginCorner(Qt::Corner corner)
Setzt die Ursprungsecke des Rasters, d. h. die Position (0, 0), auf corner.
Siehe auch originCorner().
void QGridLayout::setRowMinimumHeight(int row, int minSize)
Legt die Mindesthöhe der Zeile row auf minSize Pixel fest.
Siehe auch rowMinimumHeight() und setColumnMinimumWidth().
void QGridLayout::setRowStretch(int row, int stretch)
Legt den Stretch-Faktor der Zeile row auf stretch fest. Die erste Zeile hat die Nummer 0.
Der Dehnungsfaktor bezieht sich auf die anderen Zeilen in diesem Raster. Zeilen mit einem höheren Dehnungsfaktor nehmen mehr vom verfügbaren Platz ein.
Der Standard-Dehnungsfaktor ist 0. Wenn der Dehnungsfaktor 0 ist und keine andere Zeile in dieser Tabelle überhaupt wachsen kann, kann die Zeile dennoch wachsen.
Siehe auch rowStretch(), setRowMinimumHeight() und setColumnStretch().
[override virtual] void QGridLayout::setSpacing(int spacing)
Implementiert eine Zugriffsfunktion für die Eigenschaft „ QLayout::spacing “ neu.
Diese Funktion setzt sowohl den vertikalen als auch den horizontalen Abstand auf ` spacing`.
Siehe auch „ spacing()“, „ setVerticalSpacing()“ und „ setHorizontalSpacing()“.
[override virtual] QSize QGridLayout::sizeHint() const
Implementiert: ` QLayoutItem::sizeHint()` const.
[override virtual] int QGridLayout::spacing() const
Implementiert eine Zugriffsfunktion für die Eigenschaft „ QLayout::spacing “ neu.
Ist der vertikale Abstand gleich dem horizontalen Abstand, gibt diese Funktion diesen Wert zurück; andernfalls gibt sie -1 zurück.
Siehe auch setSpacing(), verticalSpacing() und horizontalSpacing().
[override virtual] QLayoutItem *QGridLayout::takeAt(int index)
Implementiert: QLayout::takeAt(int index).
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.