31class Q_QUICK_EXPORT
QQuickSafeArea :
public QObject,
public QQuickItemChangeListener
35 Q_PROPERTY(QMarginsF margins READ margins NOTIFY marginsChanged FINAL)
36 Q_PROPERTY(QMarginsF additionalMargins READ additionalMargins WRITE setAdditionalMargins NOTIFY additionalMarginsChanged FINAL)
38 QML_NAMED_ELEMENT(SafeArea)
39 QML_ADDED_IN_VERSION(6, 9)
40 QML_ATTACHED(QQuickSafeArea)
41 QML_UNCREATABLE(
"SafeArea can only be used via the attached property.")
44 QQuickSafeArea(QQuickItem *attachee =
nullptr);
47 static QQuickSafeArea *qmlAttachedProperties(QObject *attachee);
49 QMarginsF margins()
const;
51 QMarginsF additionalMargins()
const;
52 void setAdditionalMargins(
const QMarginsF &additionalMargins);
54 static void updateSafeAreasRecursively(QQuickItem *fromItem);
57 void marginsChanged();
58 void additionalMarginsChanged();
62 void updateSafeArea();
64 void itemTransformChanged(QQuickItem *, QQuickItem *) override;
65 void itemGeometryChanged(QQuickItem *, QQuickGeometryChange,
const QRectF &) override;
67#ifndef QT_NO_DEBUG_STREAM
68 friend Q_QUICK_EXPORT QDebug operator<<(QDebug debug,
const QQuickSafeArea *safeArea);
71 QMarginsF m_safeAreaMargins;
72 QMarginsF m_additionalMargins;
73 bool emittingMarginsUpdate =
false;
74 bool detectedPossibleBindingLoop =
false;
76 void addSourceItem(QQuickItem *item) override;
77 void removeSourceItem(QQuickItem *item) override;
78 QList<QPointer<QQuickItem>> m_listenedItems;
80 friend class QQuickItem;
81 friend class QQuickControl;