QGraphicsLayoutItem Class
Die Klasse QGraphicsLayoutItem kann geerbt werden, damit Ihre benutzerdefinierten Elemente von Layouts verwaltet werden können. Mehr...
Kopfzeile: | #include <QGraphicsLayoutItem> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Widgets) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
qmake: | QT += widgets |
Vererbt von: |
Öffentliche Funktionen
QGraphicsLayoutItem(QGraphicsLayoutItem *parent = nullptr, bool isLayout = false) | |
virtual | ~QGraphicsLayoutItem() |
QRectF | contentsRect() const |
QSizeF | effectiveSizeHint(Qt::SizeHint which, const QSizeF &constraint = QSizeF()) const |
QRectF | geometry() const |
virtual void | getContentsMargins(qreal *left, qreal *top, qreal *right, qreal *bottom) const |
QGraphicsItem * | graphicsItem() const |
(since 6.0) virtual bool | isEmpty() const |
bool | isLayout() const |
qreal | maximumHeight() const |
QSizeF | maximumSize() const |
qreal | maximumWidth() const |
qreal | minimumHeight() const |
QSizeF | minimumSize() const |
qreal | minimumWidth() const |
bool | ownedByLayout() const |
QGraphicsLayoutItem * | parentLayoutItem() const |
qreal | preferredHeight() const |
QSizeF | preferredSize() const |
qreal | preferredWidth() const |
virtual void | setGeometry(const QRectF &rect) |
void | setMaximumHeight(qreal height) |
void | setMaximumSize(const QSizeF &size) |
void | setMaximumSize(qreal w, qreal h) |
void | setMaximumWidth(qreal width) |
void | setMinimumHeight(qreal height) |
void | setMinimumSize(const QSizeF &size) |
void | setMinimumSize(qreal w, qreal h) |
void | setMinimumWidth(qreal width) |
void | setParentLayoutItem(QGraphicsLayoutItem *parent) |
void | setPreferredHeight(qreal height) |
void | setPreferredSize(const QSizeF &size) |
void | setPreferredSize(qreal w, qreal h) |
void | setPreferredWidth(qreal width) |
void | setSizePolicy(const QSizePolicy &policy) |
void | setSizePolicy(QSizePolicy::Policy hPolicy, QSizePolicy::Policy vPolicy, QSizePolicy::ControlType controlType = QSizePolicy::DefaultType) |
QSizePolicy | sizePolicy() const |
virtual void | updateGeometry() |
Geschützte Funktionen
void | setGraphicsItem(QGraphicsItem *item) |
void | setOwnedByLayout(bool ownership) |
virtual QSizeF | sizeHint(Qt::SizeHint which, const QSizeF &constraint = QSizeF()) const = 0 |
Detaillierte Beschreibung
QGraphicsLayoutItem ist eine abstrakte Klasse, die einen Satz virtueller Funktionen definiert, die Größen, Größenrichtlinien und Größenhinweise für jedes beliebige Objekt beschreiben, das von QGraphicsLayout angeordnet wird. Die API enthält Funktionen, die sowohl für das Objekt selbst als auch für den Benutzer des Objekts relevant sind, da die meisten Funktionen von QGraphicsLayoutItem auch Teil der öffentlichen API der Unterklasse sind.
In den meisten Fällen bieten bestehende Layout-Klassen wie QGraphicsWidget und QGraphicsLayout bereits die von Ihnen benötigte Funktionalität. Durch die Unterklassifizierung dieser Klassen können Sie jedoch sowohl grafische Elemente erstellen, die gut mit Layouts funktionieren (QGraphicsWidget), als auch eigene Layouts (QGraphicsLayout).
Unterklassifizierung von QGraphicsLayoutItem
Wenn Sie eine Unterklasse von QGraphicsLayoutItem erstellen und deren virtuelle Funktionen reimplementieren, können Sie das Layout in die Lage versetzen, die Größe und Position Ihres Elements zusammen mit anderen QGraphicsLayoutItems, einschließlich QGraphicsWidget und QGraphicsLayout, zu ändern.
Beginnen Sie mit der Neuimplementierung wichtiger Funktionen: die geschützte Funktion sizeHint() sowie die öffentliche Funktion setGeometry(). Wenn Sie möchten, dass Ihre Elemente sofortige Geometrieänderungen erkennen, können Sie auch updateGeometry() neu implementieren.
Die Geometrie, der Größenhinweis und die Größenrichtlinie wirken sich auf die Größe und Position des Elements aus. Der Aufruf von setGeometry() führt immer zu einer sofortigen Größenänderung und Neupositionierung des Objekts. Normalerweise wird diese Funktion von QGraphicsLayout aufgerufen, nachdem das Layout aktiviert wurde, sie kann aber auch jederzeit vom Benutzer des Objekts aufgerufen werden.
Die Funktion sizeHint() gibt Hinweise auf die minimale, bevorzugte und maximale Größe des Elements zurück. Sie können diese Eigenschaften durch den Aufruf von setMinimumSize(), setPreferredSize() oder setMaximumSize() außer Kraft setzen. Sie können auch Funktionen wie setMinimumWidth() oder setMaximumHeight() verwenden, um nur die Breiten- oder Höhenkomponente einzustellen, falls gewünscht.
Die Funktion effectiveSizeHint() hingegen gibt einen Größenhinweis für eine beliebige Qt::SizeHint zurück und garantiert, dass die zurückgegebene Größe an die Mindest- und Maximalgrößen und Größenhinweise gebunden ist. Sie können die vertikale und horizontale Größenpolitik des Elements durch den Aufruf von setSizePolicy() festlegen. Die Eigenschaft sizePolicy wird vom Layoutsystem verwendet, um zu beschreiben, wie dieses Element wachsen oder schrumpfen soll.
Verschachtelung von QGraphicsLayoutItems
QGraphicsLayoutItems können innerhalb anderer QGraphicsLayoutItems verschachtelt werden, ähnlich wie Layouts, die Sublayouts enthalten können. Dies geschieht entweder durch Übergabe eines QGraphicsLayoutItem-Zeigers an den geschützten Konstruktor von QGraphicsLayoutItem oder durch Aufruf von setParentLayoutItem(). Die Funktion parentLayoutItem() gibt einen Zeiger auf den LayoutItem-Elternteil des Elements zurück. Wenn das übergeordnete Element nullptr
ist oder wenn das übergeordnete Element nicht von QGraphicsItem erbt, gibt die Funktion parentLayoutItem() nullptr
zurück. isLayout() gibt true
zurück, wenn die QGraphicsLayoutItem-Unterklasse selbst ein Layout ist, oder andernfalls false.
Qt verwendet QGraphicsLayoutItem, um Layout-Funktionalität im Graphics View Framework bereitzustellen, aber in der Zukunft könnte sich seine Verwendung in Qt selbst ausbreiten.
Siehe auch QGraphicsWidget, QGraphicsLayout, QGraphicsLinearLayout, und QGraphicsGridLayout.
Dokumentation der Mitgliedsfunktionen
QGraphicsLayoutItem::QGraphicsLayoutItem(QGraphicsLayoutItem *parent = nullptr, bool isLayout = false)
Konstruiert das QGraphicsLayoutItem-Objekt. parent wird zum übergeordneten Element des Objekts. Wenn isLayout wahr ist, ist das Objekt ein Layout, andernfalls ist isLayout falsch.
[virtual noexcept]
QGraphicsLayoutItem::~QGraphicsLayoutItem()
Zerstört das Objekt QGraphicsLayoutItem.
QRectF QGraphicsLayoutItem::contentsRect() const
Gibt das Inhalts-Rect in lokalen Koordinaten zurück.
Das Inhalts-Rect definiert das Unterrechteck, das von einem verknüpften Layout beim Anordnen von Unterelementen verwendet wird. Diese Funktion ist eine Komfortfunktion, die geometry() um die Ränder des Elements anpasst. Beachten Sie, dass getContentsMargins() eine virtuelle Funktion ist, die Sie neu implementieren können, um die Inhaltsränder des Elements zurückzugeben.
Siehe auch getContentsMargins() und geometry().
QSizeF QGraphicsLayoutItem::effectiveSizeHint(Qt::SizeHint which, const QSizeF &constraint = QSizeF()) const
Gibt den effektiven Größenhinweis für diese QGraphicsLayoutItem zurück.
which ist der betreffende Größenhinweis. constraint ist ein optionales Argument, das eine spezielle Einschränkung bei der Berechnung des effektiven Größenhinweises definiert. Standardmäßig ist constraint QSizeF (-1, -1), was bedeutet, dass es keine Beschränkung für den Größenhinweis gibt.
Wenn Sie den Größenhinweis des Widgets für eine bestimmte Breite oder Höhe angeben möchten, können Sie die feste Abmessung in constraint angeben. Dies ist nützlich für Widgets, die nur entweder vertikal oder horizontal wachsen können und deren Breite oder Höhe auf einen bestimmten Wert festgelegt werden muss.
Zum Beispiel kann ein Textabsatz, der in eine Spaltenbreite von 200 passt, vertikal wachsen. Sie können QSizeF(200, -1) als Einschränkung übergeben, um eine geeignete minimale, bevorzugte und maximale Höhe zu erhalten.)
Sie können den Hinweis auf die effektive Größe anpassen, indem Sie sizeHint() in einer QGraphicsLayoutItem -Unterklasse neu implementieren oder eine der folgenden Funktionen aufrufen: setMinimumSize(), setPreferredSize oder setMaximumSize() (oder eine Kombination aus beiden).
Diese Funktion speichert jeden der Größenhinweise und garantiert, dass sizeHint() nur einmal für jeden Wert von which aufgerufen wird - es sei denn, constraint ist nicht angegeben und updateGeometry() wurde aufgerufen.
Siehe auch sizeHint().
QRectF QGraphicsLayoutItem::geometry() const
Gibt die Geometrie des Objekts (z. B. Position und Größe) als QRectF zurück. Diese Funktion ist äquivalent zu QRectF(pos(), size()).
Siehe auch setGeometry().
[virtual]
void QGraphicsLayoutItem::getContentsMargins(qreal *left, qreal *top, qreal *right, qreal *bottom) const
Diese virtuelle Funktion liefert die left, top, right und bottom Inhaltsränder für diese QGraphicsLayoutItem. Die Standardimplementierung nimmt an, dass alle Inhaltsränder 0 sind. Die Parameter zeigen auf Werte, die in qreals gespeichert sind. Wenn einer der Zeiger nullptr
ist, wird dieser Wert nicht aktualisiert.
Siehe auch QGraphicsWidget::setContentsMargins().
QGraphicsItem *QGraphicsLayoutItem::graphicsItem() const
Gibt die QGraphicsItem zurück, die dieses Layoutelement darstellt. Für QGraphicsWidget wird der Wert selbst zurückgegeben. Für benutzerdefinierte Elemente kann es einen aggregierten Wert zurückgeben.
Siehe auch setGraphicsItem().
[virtual, since 6.0]
bool QGraphicsLayoutItem::isEmpty() const
Gibt true
zurück, wenn dieses Element leer ist, d. h. wenn es keinen Inhalt hat und keinen Platz einnehmen sollte.
Die Standard-Implementierung gibt true
true zurück, wenn das Element versteckt wurde, es sei denn, sein size policy hat retainSizeWhenHidden auf true
Diese Funktion wurde in Qt 6.0 eingeführt.
Siehe auch sizePolicy().
bool QGraphicsLayoutItem::isLayout() const
Gibt true
zurück, wenn dieses QGraphicsLayoutItem ein Layout ist (z. B. von einem Objekt geerbt wird, das andere QGraphicsLayoutItem Objekte anordnet); andernfalls wird false
zurückgegeben.
Siehe auch QGraphicsLayout.
qreal QGraphicsLayoutItem::maximumHeight() const
Gibt die maximale Höhe zurück.
Siehe auch setMaximumHeight(), setMaximumSize(), und maximumSize().
QSizeF QGraphicsLayoutItem::maximumSize() const
Gibt die maximale Größe zurück.
Siehe auch setMaximumSize(), minimumSize(), preferredSize(), Qt::MaximumSize, und sizeHint().
qreal QGraphicsLayoutItem::maximumWidth() const
Gibt die maximale Breite zurück.
Siehe auch setMaximumWidth(), setMaximumSize(), und maximumSize().
qreal QGraphicsLayoutItem::minimumHeight() const
Gibt die Mindesthöhe zurück.
Siehe auch setMinimumHeight(), setMinimumSize(), und minimumSize().
QSizeF QGraphicsLayoutItem::minimumSize() const
Gibt die Mindestgröße zurück.
Siehe auch setMinimumSize(), preferredSize(), maximumSize(), Qt::MinimumSize, und sizeHint().
qreal QGraphicsLayoutItem::minimumWidth() const
Gibt die Mindestbreite zurück.
Siehe auch setMinimumWidth(), setMinimumSize(), und minimumSize().
bool QGraphicsLayoutItem::ownedByLayout() const
Gibt zurück, ob ein Layout dieses Element in seinem Destruktor löschen sollte. Wenn es true ist, wird das Layout es löschen. Bei false wird davon ausgegangen, dass ein anderes Objekt Eigentümer des Objekts ist, und das Layout löscht das Element nicht.
Wenn das Objekt sowohl QGraphicsItem als auch QGraphicsLayoutItem erbt (wie z. B. QGraphicsWidget ), ist das Objekt tatsächlich Teil von zwei Eigentümerhierarchien. Diese Eigenschaft gibt an, was das Layout mit seinen untergeordneten Elementen tun soll, wenn es zerstört wird. Im Fall von QGraphicsWidget ist es wünschenswert, dass beim Löschen des Layouts die untergeordneten Elemente nicht gelöscht werden (da sie ebenfalls Teil der Grafikelementhierarchie sind).
Standardmäßig ist dieser Wert in QGraphicsLayoutItem auf false initialisiert, wird aber von QGraphicsLayout überschrieben und gibt true zurück. Der Grund dafür ist, dass QGraphicsLayout normalerweise nicht Teil der Hierarchie von QGraphicsItem ist, so dass das übergeordnete Layout es löschen sollte. Unterklassen können dieses Standardverhalten außer Kraft setzen, indem sie setOwnedByLayout(true) aufrufen.
Siehe auch setOwnedByLayout().
QGraphicsLayoutItem *QGraphicsLayoutItem::parentLayoutItem() const
Gibt die übergeordnete Klasse von QGraphicsLayoutItem zurück, oder nullptr
, wenn es keine übergeordnete Klasse gibt, oder wenn die übergeordnete Klasse nicht von QGraphicsLayoutItem erbt (QGraphicsLayoutItem wird oft durch Mehrfachvererbung mit QObject-abgeleiteten Klassen verwendet).
Siehe auch setParentLayoutItem().
qreal QGraphicsLayoutItem::preferredHeight() const
Gibt die bevorzugte Höhe zurück.
Siehe auch setPreferredHeight(), setPreferredSize(), und preferredSize().
QSizeF QGraphicsLayoutItem::preferredSize() const
Gibt die bevorzugte Größe zurück.
Siehe auch setPreferredSize(), minimumSize(), maximumSize(), Qt::PreferredSize, und sizeHint().
qreal QGraphicsLayoutItem::preferredWidth() const
Gibt die bevorzugte Breite zurück.
Siehe auch setPreferredWidth(), setPreferredSize(), und preferredSize().
[virtual]
void QGraphicsLayoutItem::setGeometry(const QRectF &rect)
Diese virtuelle Funktion setzt die Geometrie von QGraphicsLayoutItem auf rect, die in übergeordneten Koordinaten vorliegt (z. B. entspricht die linke obere Ecke von rect der Position des Elements in übergeordneten Koordinaten).
Sie müssen diese Funktion in einer Unterklasse von QGraphicsLayoutItem neu implementieren, um Geometrieaktualisierungen zu erhalten. Das Layout ruft diese Funktion auf, wenn es eine Neuanordnung vornimmt.
Wenn rect außerhalb der Grenzen von minimumSize und maximumSize liegt, wird es auf die nächstmögliche Größe angepasst, so dass es innerhalb der zulässigen Grenzen liegt.
Siehe auch geometry().
[protected]
void QGraphicsLayoutItem::setGraphicsItem(QGraphicsItem *item)
Wenn QGraphicsLayoutItem ein QGraphicsItem darstellt und die Vorteile der automatischen Reparenting-Fähigkeiten von QGraphicsLayout nutzen möchte, sollte dieser Wert gesetzt werden. Beachten Sie, dass Sie, wenn Sie item und nicht das Layout-Element löschen, dafür verantwortlich sind, setGraphicsItem(nullptr
) aufzurufen, um zu vermeiden, dass Sie einen baumelnden Zeiger haben.
Siehe auch graphicsItem().
void QGraphicsLayoutItem::setMaximumHeight(qreal height)
Setzt die maximale Höhe auf height.
Siehe auch maximumHeight(), setMaximumSize(), und maximumSize().
void QGraphicsLayoutItem::setMaximumSize(const QSizeF &size)
Setzt die maximale Größe auf size. Diese Eigenschaft setzt sizeHint() für Qt::MaximumSize außer Kraft und stellt sicher, dass effectiveSizeHint() niemals eine größere Größe als size zurückgibt. Um die maximale Größe aufzuheben, verwenden Sie eine ungültige Größe.
Siehe auch maximumSize(), minimumSize(), preferredSize(), Qt::MaximumSize, und sizeHint().
void QGraphicsLayoutItem::setMaximumSize(qreal w, qreal h)
Diese Komfortfunktion entspricht dem Aufruf von setMaximumSize(QSizeF(w, h)).
Siehe auch maximumSize(), setMinimumSize(), setPreferredSize(), und sizeHint().
void QGraphicsLayoutItem::setMaximumWidth(qreal width)
Setzt die maximale Breite auf width.
Siehe auch maximumWidth(), setMaximumSize(), und maximumSize().
void QGraphicsLayoutItem::setMinimumHeight(qreal height)
Setzt die Mindesthöhe auf height.
Siehe auch minimumHeight(), setMinimumSize(), und minimumSize().
void QGraphicsLayoutItem::setMinimumSize(const QSizeF &size)
Setzt die Mindestgröße auf size. Diese Eigenschaft setzt sizeHint() für Qt::MinimumSize außer Kraft und stellt sicher, dass effectiveSizeHint() nie eine kleinere Größe als size zurückgibt. Um die Mindestgröße aufzuheben, verwenden Sie eine ungültige Größe.
Siehe auch minimumSize(), maximumSize(), preferredSize(), Qt::MinimumSize, sizeHint(), setMinimumWidth(), und setMinimumHeight().
void QGraphicsLayoutItem::setMinimumSize(qreal w, qreal h)
Diese Komfortfunktion entspricht dem Aufruf von setMinimumSize(QSizeF(w, h)).
Siehe auch minimumSize(), setMaximumSize(), setPreferredSize(), und sizeHint().
void QGraphicsLayoutItem::setMinimumWidth(qreal width)
Setzt die Mindestbreite auf width.
Siehe auch minimumWidth(), setMinimumSize(), und minimumSize().
[protected]
void QGraphicsLayoutItem::setOwnedByLayout(bool ownership)
Legt fest, ob ein Layout dieses Element in seinem Destruktor löschen soll oder nicht. ownership muss true to sein, damit das Layout es löschen kann.
Siehe auch ownedByLayout().
void QGraphicsLayoutItem::setParentLayoutItem(QGraphicsLayoutItem *parent)
Setzt das übergeordnete Element dieses QGraphicsLayoutItem auf parent.
Siehe auch parentLayoutItem().
void QGraphicsLayoutItem::setPreferredHeight(qreal height)
Setzt die bevorzugte Höhe auf height.
Siehe auch preferredHeight(), preferredWidth(), setPreferredSize(), und preferredSize().
void QGraphicsLayoutItem::setPreferredSize(const QSizeF &size)
Legt die bevorzugte Größe auf size fest. Diese Eigenschaft setzt sizeHint() für Qt::PreferredSize außer Kraft und liefert den Standardwert für effectiveSizeHint(). Um die bevorzugte Größe zu deaktivieren, verwenden Sie eine ungültige Größe.
Siehe auch preferredSize(), minimumSize(), maximumSize(), Qt::PreferredSize, und sizeHint().
void QGraphicsLayoutItem::setPreferredSize(qreal w, qreal h)
Diese Komfortfunktion entspricht dem Aufruf von setPreferredSize(QSizeF(w, h)).
Siehe auch preferredSize(), setMaximumSize(), setMinimumSize(), und sizeHint().
void QGraphicsLayoutItem::setPreferredWidth(qreal width)
Setzt die bevorzugte Breite auf width.
Siehe auch preferredWidth(), preferredHeight(), setPreferredSize(), und preferredSize().
void QGraphicsLayoutItem::setSizePolicy(const QSizePolicy &policy)
Setzt die Größenrichtlinie auf policy. Die Größenrichtlinie beschreibt, wie das Element horizontal und vertikal wachsen soll, wenn es in einem Layout angeordnet wird.
QGraphicsLayoutItemDie Standard-Größenrichtlinie vonQSizePolicy::Fixed ist ( , QSizePolicy::Fixed, QSizePolicy::DefaultType), aber es ist üblich, dass Unterklassen die Standardgröße ändern. Zum Beispiel ist QGraphicsWidget standardmäßig auf (QSizePolicy::Preferred, QSizePolicy::Preferred, QSizePolicy::DefaultType) eingestellt.
Siehe auch sizePolicy() und QWidget::sizePolicy().
void QGraphicsLayoutItem::setSizePolicy(QSizePolicy::Policy hPolicy, QSizePolicy::Policy vPolicy, QSizePolicy::ControlType controlType = QSizePolicy::DefaultType)
Dies ist eine überladene Funktion.
Diese Funktion ist äquivalent zum Aufruf von setSizePolicy(QSizePolicy(hPolicy, vPolicy, controlType)).
Siehe auch sizePolicy() und QWidget::sizePolicy().
[pure virtual protected]
QSizeF QGraphicsLayoutItem::sizeHint(Qt::SizeHint which, const QSizeF &constraint = QSizeF()) const
Diese rein virtuelle Funktion gibt den Größenhinweis für which der QGraphicsLayoutItem zurück, indem sie die Breite oder Höhe von constraint verwendet, um die Ausgabe einzuschränken.
Reimplementieren Sie diese Funktion in einer Unterklasse von QGraphicsLayoutItem, um die notwendigen Größenhinweise für Ihre Elemente bereitzustellen.
Siehe auch effectiveSizeHint().
QSizePolicy QGraphicsLayoutItem::sizePolicy() const
Gibt die aktuelle Größenrichtlinie zurück.
Siehe auch setSizePolicy() und QWidget::sizePolicy().
[virtual]
void QGraphicsLayoutItem::updateGeometry()
Diese virtuelle Funktion verwirft alle zwischengespeicherten Größenhinweisinformationen. Sie sollten diese Funktion immer aufrufen, wenn Sie den Rückgabewert der Funktion sizeHint() ändern. Unterklassen müssen immer die Basisimplementierung aufrufen, wenn sie diese Funktion reimplementieren.
Siehe auch effectiveSizeHint().
© 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.