QGridLayout Class
Die Klasse QGridLayout ordnet Widgets in einem Raster an. Mehr...
Kopfzeile: | #include <QGridLayout> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Widgets) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
qmake: | QT += widgets |
Vererbt: | 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 |
Reimplementierte ö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 |
Reimplementierte geschützte Funktionen
virtual void | addItem(QLayoutItem *item) override |
Detaillierte Beschreibung
QGridLayout nimmt den ihm zur Verfügung gestellten Platz (durch sein übergeordnetes Layout oder durch parentWidget()), teilt ihn in Zeilen und Spalten auf und setzt jedes von ihm verwaltete Widget in die richtige Zelle.
Spalten und Zeilen verhalten sich identisch; wir werden die Spalten behandeln, aber es gibt äquivalente Funktionen für Zeilen.
Jede Spalte hat eine Mindestbreite und einen Streckungsfaktor. Die Mindestbreite ist der größte Wert, der mit setColumnMinimumWidth() und der Mindestbreite der einzelnen Widgets in dieser Spalte festgelegt wird. Der Dehnungsfaktor wird mit setColumnStretch() festgelegt und bestimmt, wie viel des verfügbaren Platzes die Spalte über ihr notwendiges Minimum hinaus erhält.
Normalerweise wird jedes verwaltete Widget oder Layout mit addWidget() in eine eigene Zelle gesetzt. Es ist auch möglich, dass ein Widget mehrere Zellen belegt, indem man die zeilen- und spaltenübergreifenden Überladungen von addItem() und addWidget() verwendet. Wenn Sie dies tun, wird QGridLayout erraten, wie die Größe über die Spalten/Zeilen zu verteilen ist (basierend auf den Streckfaktoren).
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 aus dem Layout, bis QWidget::show() aufgerufen wird.
Diese Abbildung zeigt ein Fragment eines Dialogs mit einem fünfspaltigen, dreizeiligen Raster (das Raster ist in Magenta überlagert):
Die Spalten 0, 2 und 4 in diesem Dialogfragment bestehen aus einer QLabel, einer QLineEdit und einer 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 Platzhalterspalten (1 und 3) verwendet, um den richtigen Abstand zwischen den Spalten zu erhalten.
Beachten Sie, dass die Spalten und Zeilen nicht gleich breit oder hoch sind. Wenn Sie möchten, dass zwei Spalten die gleiche Breite haben, müssen Sie ihre Mindestbreiten und Streckungsfaktoren gleich einstellen. Dies tun Sie mit setColumnMinimumWidth() und setColumnStretch().
Wenn das QGridLayout nicht das Top-Level-Layout ist (d.h. nicht alle Bereiche und Kinder des Widgets verwaltet), müssen Sie es zu seinem übergeordneten Layout hinzufügen, wenn Sie es erstellen, aber bevor Sie irgendetwas mit ihm machen. Der normale Weg, ein Layout hinzuzufügen, ist der Aufruf von addLayout() für das übergeordnete Layout.
Sobald Sie Ihr Layout hinzugefügt haben, können Sie damit beginnen, Widgets und andere Layouts mit addWidget(), addItem() und addLayout() in die Zellen Ihres Grid-Layouts einzufügen.
QGridLayout enthält auch zwei Randbreiten: contents margin und spacing(). Der Inhaltsrand ist die Breite des reservierten Raums entlang jeder der vier Seiten des QGridLayouts. Die spacing() ist die Breite des automatisch zugewiesenen Abstands zwischen benachbarten Boxen.
Die Standardwerte für den Rand werden von style bereitgestellt. Der Standardwert, den Qt-Stile vorgeben, ist 9 für untergeordnete Widgets und 11 für Fenster. Der Abstand ist standardmäßig der gleiche wie die Randbreite für ein Layout der obersten Ebene oder der gleiche wie für das übergeordnete Layout.
Siehe auch QBoxLayout, QStackedLayout, Layout-Verwaltung und Beispiel für grundlegende Layouts.
Dokumentation der Eigenschaft
horizontalSpacing : int
Diese Eigenschaft bestimmt den Abstand zwischen Widgets, die nebeneinander angeordnet sind.
Wenn kein Wert explizit gesetzt wird, wird der horizontale Abstand des Layouts vom übergeordneten Layout oder von den Stileinstellungen für das übergeordnete Widget geerbt.
Zugriffsfunktionen:
int | horizontalSpacing() const |
void | setHorizontalSpacing(int spacing) |
Siehe auch verticalSpacing, QStyle::pixelMetric(), und PM_LayoutHorizontalSpacing.
verticalSpacing : int
Diese Eigenschaft legt den Abstand zwischen übereinander angeordneten Widgets fest.
Wenn kein Wert explizit gesetzt wird, wird der vertikale Abstand des Layouts vom übergeordneten Layout oder von den Stileinstellungen für das übergeordnete Widget geerbt.
Zugriffsfunktionen:
int | verticalSpacing() const |
void | setVerticalSpacing(int spacing) |
Siehe auch horizontalSpacing, QStyle::pixelMetric(), und PM_LayoutHorizontalSpacing.
Dokumentation der Mitgliedsfunktionen
[explicit]
QGridLayout::QGridLayout(QWidget *parent = nullptr)
Konstruiert ein neues QGridLayout mit dem übergeordneten Widget parent. Das Layout hat zunächst eine Zeile und eine Spalte und wird erweitert, wenn neue Elemente eingefügt werden.
Das Layout wird direkt als Top-Level-Layout für parent festgelegt. Es kann nur ein Layout der obersten Ebene für ein Widget geben. Es wird von QWidget::layout() zurückgegeben.
Wenn parent nullptr
ist, müssen Sie dieses Rasterlayout in ein anderes Layout einfügen oder es mit QWidget::setLayout() als Layout für ein Widget festlegen.
Siehe auch QWidget::setLayout().
[virtual noexcept]
QGridLayout::~QGridLayout()
Zerstört das Rasterlayout. Die Geometrieverwaltung wird beendet, wenn es sich um ein Top-Level-Grid handelt.
Die Widgets des Layouts werden nicht zerstört.
[override virtual protected]
void QGridLayout::addItem(QLayoutItem *item)
Reimplements: 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 ein, überspannt rowSpan Zeilen und columnSpan Spalten und richtet es gemäß alignment aus. Wenn rowSpan und/oder columnSpan den Wert -1 hat, reicht das Element bis zum unteren bzw. rechten Rand. Das Layout übernimmt das Eigentum an item.
Warnung: Verwenden Sie diese Funktion nicht, um untergeordnete Layouts oder untergeordnete Widgetelemente hinzuzufügen. Verwenden Sie stattdessen addLayout() oder addWidget().
void QGridLayout::addLayout(QLayout *layout, int row, int column, Qt::Alignment alignment = Qt::Alignment())
Platziert die layout an der Position (row, column) im Raster. Die obere linke Position ist (0, 0).
Die Ausrichtung wird durch alignment festgelegt. Die Standardausrichtung ist 0, was bedeutet, dass das Widget die gesamte Zelle ausfüllt.
Eine Ausrichtung ungleich Null zeigt an, dass das Layout nicht wachsen soll, um den verfügbaren Platz auszufüllen, sondern dass die Größe gemäß sizeHint() angepasst werden soll.
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())
Dies ist eine überladene Funktion.
Diese Version fügt dem Zellenraster das Layout layout hinzu, das sich über mehrere Zeilen/Spalten erstreckt. Die Zelle beginnt bei row, column und erstreckt sich über rowSpan Zeilen und columnSpan Spalten.
Wenn rowSpan und/oder columnSpan gleich -1 ist, erstreckt sich das Layout bis zum unteren bzw. rechten Rand.
void QGridLayout::addWidget(QWidget *widget, int row, int column, Qt::Alignment alignment = Qt::Alignment())
Fügt die angegebene widget dem Zellengitter an row, column hinzu. Die linke obere Position 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())
Dies ist eine überladene Funktion.
Diese Version fügt die angegebene widget in das Zellengitter ein, das sich über mehrere Zeilen/Spalten erstreckt. Die Zelle beginnt bei fromRow, fromColumn und erstreckt sich über rowSpan Zeilen und columnSpan Spalten. Die widget hat die angegebene alignment.
Wenn rowSpan und/oder columnSpan gleich -1 ist, erstreckt sich das Widget bis zum unteren bzw. rechten Rand.
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 Gitters liegt.
Warnung: In der aktuellen Version von Qt gibt diese Funktion keine gültigen Ergebnisse zurück, bevor setGeometry() aufgerufen wurde, d.h. nachdem parentWidget() sichtbar ist.
int QGridLayout::columnCount() const
Gibt die Anzahl der Spalten in diesem Grid 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 Streckungsfaktor für die Spalte column zurück.
Siehe auch setColumnStretch().
[override virtual]
int QGridLayout::count() const
Reimplements: QLayout::count() const.
[override virtual]
Qt::Orientations QGridLayout::expandingDirections() const
Reimplements: QLayout::expandingDirections() const.
void QGridLayout::getItemPosition(int index, int *row, int *column, int *rowSpan, int *columnSpan) const
Gibt die Positionsinformationen des Elements mit der 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
Reimplements: QLayoutItem::hasHeightForWidth() const.
[override virtual]
int QGridLayout::heightForWidth(int w) const
Reimplements: QLayoutItem::heightForWidth(int) const.
[override virtual]
void QGridLayout::invalidate()
Reimplements: QLayout::invalidate().
[override virtual]
QLayoutItem *QGridLayout::itemAt(int index) const
Reimplements: QLayout::itemAt(int index) const.
QLayoutItem *QGridLayout::itemAtPosition(int row, int column) const
Gibt das Layoutelement zurück, das die Zelle (row, column) belegt, oder nullptr
, wenn die Zelle leer ist.
Siehe auch getItemPosition() und indexOf().
[override virtual]
QSize QGridLayout::maximumSize() const
Reimplements: QLayout::maximumSize() const.
[override virtual]
int QGridLayout::minimumHeightForWidth(int w) const
Reimplements: QLayoutItem::minimumHeightForWidth(int w) const.
[override virtual]
QSize QGridLayout::minimumSize() const
Reimplements: QLayout::minimumSize() const.
Qt::Corner QGridLayout::originCorner() const
Gibt die Ecke zurück, die für den Ursprung des Gitters verwendet wird, d.h. für die Position (0, 0).
Siehe auch setOriginCorner().
int QGridLayout::rowCount() const
Gibt die Anzahl der Zeilen in diesem Gitter 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 Streckungsfaktor für die Zeile row zurück.
Siehe auch setRowStretch().
void QGridLayout::setColumnMinimumWidth(int column, int minSize)
Setzt die Mindestbreite der Spalte column auf minSize Pixel.
Siehe auch columnMinimumWidth() und setRowMinimumHeight().
void QGridLayout::setColumnStretch(int column, int stretch)
Setzt den Streckungsfaktor der Spalte column auf stretch. Die erste Spalte hat die Nummer 0.
Der Streckungsfaktor ist relativ zu den anderen Spalten in diesem Raster. Spalten mit einem höheren Dehnungsfaktor nehmen mehr Platz in Anspruch.
Der Standard-Dehnungsfaktor ist 0. Wenn der Dehnungsfaktor 0 ist und keine andere Spalte in dieser Tabelle überhaupt wachsen kann, kann die Spalte trotzdem wachsen.
Ein alternativer Ansatz ist das Hinzufügen von Abstand mit addItem() und QSpacerItem.
Siehe auch columnStretch() und setRowStretch().
[override virtual]
void QGridLayout::setGeometry(const QRect &rect)
Reimplements: QLayout::setGeometry(const QRect &r).
void QGridLayout::setOriginCorner(Qt::Corner corner)
Setzt die Ursprungsecke des Gitters, d.h. die Position (0, 0), auf corner.
Siehe auch originCorner().
void QGridLayout::setRowMinimumHeight(int row, int minSize)
Setzt die Mindesthöhe der Zeile row auf minSize Pixel.
Siehe auch rowMinimumHeight() und setColumnMinimumWidth().
void QGridLayout::setRowStretch(int row, int stretch)
Setzt den Streckungsfaktor der Zeile row auf stretch. Die erste Zeile hat die Nummer 0.
Der Streckungsfaktor ist relativ zu den anderen Zeilen in diesem Raster. Zeilen mit einem höheren Dehnungsfaktor nehmen mehr Platz in Anspruch.
Der Standard-Dehnungsfaktor ist 0. Wenn der Dehnungsfaktor 0 ist und keine andere Zeile in dieser Tabelle überhaupt wachsen kann, kann die Zeile trotzdem wachsen.
Siehe auch rowStretch(), setRowMinimumHeight(), und setColumnStretch().
[override virtual]
void QGridLayout::setSpacing(int spacing)
Reimplementiert eine Zugriffsfunktion für die Eigenschaft: QLayout::spacing.
Diese Funktion setzt sowohl die vertikalen als auch die horizontalen Abstände auf spacing.
Siehe auch spacing(), setVerticalSpacing(), und setHorizontalSpacing().
[override virtual]
QSize QGridLayout::sizeHint() const
Reimplements: QLayoutItem::sizeHint() const.
[override virtual]
int QGridLayout::spacing() const
Reimplantiert eine Zugriffsfunktion für die Eigenschaft: QLayout::spacing.
Wenn der vertikale Abstand gleich dem horizontalen Abstand ist, 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)
Reimplements: QLayout::takeAt(int index).
© 2025 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.