4#ifndef QQUICKLAYOUT_P_H
5#define QQUICKLAYOUT_P_H
20#include <QtCore/qflags.h>
22#include <QtQuickLayouts/private/qquicklayoutglobal_p.h>
23#include <private/qquickitem_p.h>
24#include <QtQuick/private/qquickitemchangelistener_p.h>
25#include <QtGui/private/qlayoutpolicy_p.h>
26#include <QtGui/qguiapplication.h>
53 ApplySizeHints = 0b010
56 Q_DECLARE_FLAGS(EnsureLayoutItemsUpdatedOptions, EnsureLayoutItemsUpdatedOption)
64 void componentComplete()
override;
69 virtual void invalidate(
QQuickItem * childItem =
nullptr);
72 void ensureLayoutItemsUpdated(EnsureLayoutItemsUpdatedOptions options = {})
const;
78 virtual void rearrange(
const QSizeF &);
86 void geometryChange(
const QRectF &newGeometry,
const QRectF &oldGeometry)
override;
88 void deactivateRecur();
90 bool invalidated()
const;
91 bool invalidatedArrangement()
const;
92 bool isMirrored()
const;
107 void updatePolish()
override;
116 void invalidateSenderItem();
119 unsigned m_inUpdatePolish : 1;
120 unsigned m_polishInsideUpdatePolish : 2;
134 , m_dirtyArrangement(true)
136 , m_disableRearrange(true)
137 , m_hasItemChangeListeners(
false) {}
139 void applySizeHints()
const;
163 Q_PROPERTY(
qreal minimumWidth READ minimumWidth WRITE setMinimumWidth NOTIFY minimumWidthChanged FINAL)
164 Q_PROPERTY(
qreal minimumHeight READ minimumHeight WRITE setMinimumHeight NOTIFY minimumHeightChanged FINAL)
165 Q_PROPERTY(
qreal preferredWidth READ preferredWidth WRITE setPreferredWidth NOTIFY preferredWidthChanged FINAL)
166 Q_PROPERTY(
qreal preferredHeight READ preferredHeight WRITE setPreferredHeight NOTIFY preferredHeightChanged FINAL)
167 Q_PROPERTY(
qreal maximumWidth READ maximumWidth WRITE setMaximumWidth NOTIFY maximumWidthChanged FINAL)
168 Q_PROPERTY(
qreal maximumHeight READ maximumHeight WRITE setMaximumHeight NOTIFY maximumHeightChanged FINAL)
169 Q_PROPERTY(
bool fillHeight READ fillHeight WRITE setFillHeight NOTIFY fillHeightChanged FINAL)
170 Q_PROPERTY(
bool fillWidth READ fillWidth WRITE setFillWidth NOTIFY fillWidthChanged FINAL)
173 Q_PROPERTY(
int rowSpan READ rowSpan WRITE setRowSpan NOTIFY rowSpanChanged FINAL)
174 Q_PROPERTY(
int columnSpan READ columnSpan WRITE setColumnSpan NOTIFY columnSpanChanged FINAL)
176 Q_PROPERTY(
int horizontalStretchFactor READ horizontalStretchFactor WRITE setHorizontalStretchFactor NOTIFY horizontalStretchFactorChanged FINAL)
177 Q_PROPERTY(
int verticalStretchFactor READ verticalStretchFactor WRITE setVerticalStretchFactor NOTIFY verticalStretchFactorChanged FINAL)
180 Q_PROPERTY(
qreal leftMargin READ leftMargin WRITE setLeftMargin RESET resetLeftMargin NOTIFY leftMarginChanged FINAL)
181 Q_PROPERTY(
qreal topMargin READ topMargin WRITE setTopMargin RESET resetTopMargin NOTIFY topMarginChanged FINAL)
182 Q_PROPERTY(
qreal rightMargin READ rightMargin WRITE setRightMargin RESET resetRightMargin NOTIFY rightMarginChanged FINAL)
183 Q_PROPERTY(
qreal bottomMargin READ bottomMargin WRITE setBottomMargin RESET resetBottomMargin NOTIFY bottomMarginChanged FINAL)
212 void setMinimumImplicitSize(
const QSizeF &sz);
213 void setMaximumImplicitSize(
const QSizeF &sz);
216 if (
auto *itemPriv = itemForSizePolicy(m_isFillWidthSet))
220 void setFillWidth(
bool fill);
224 if (
auto *itemPriv = itemForSizePolicy(m_isFillHeightSet))
228 void setFillHeight(
bool fill);
232 void setRow(
int row);
235 void setColumn(
int column);
239 void setRowSpan(
int span);
241 void setColumnSpan(
int span);
248 void setHorizontalStretchFactor(
int stretchFactor);
251 void setVerticalStretchFactor(
int stretchFactor);
258 qreal leftMargin()
const {
return m_isLeftMarginSet ? m_margins.left() : m_defaultMargins; }
259 void setLeftMargin(
qreal m);
260 void resetLeftMargin();
263 qreal topMargin()
const {
return m_isTopMarginSet ? m_margins.top() : m_defaultMargins; }
264 void setTopMargin(
qreal m);
265 void resetTopMargin();
268 qreal rightMargin()
const {
return m_isRightMarginSet ? m_margins.right() : m_defaultMargins; }
269 void setRightMargin(
qreal m);
270 void resetRightMargin();
273 qreal bottomMargin()
const {
return m_isBottomMarginSet ? m_margins.bottom() : m_defaultMargins; }
274 void setBottomMargin(
qreal m);
275 void resetBottomMargin();
279 return QMarginsF(leftMargin(), topMargin(), rightMargin(), bottomMargin());
283 bool mirrored = parentLayout() && parentLayout()->isMirrored();
285 return QMarginsF(rightMargin(), topMargin(), leftMargin(), bottomMargin());
292 const bool old = m_changesNotificationEnabled;
293 m_changesNotificationEnabled =
enabled;
303 return o ==
Qt::Horizontal ? m_isMinimumWidthSet : m_isMinimumHeightSet;
305 return o ==
Qt::Horizontal ? m_isMaximumWidthSet : m_isMaximumHeightSet;
318 if (!isFillSet && qobject_cast<QQuickItem *>(
item()) &&
347 void invalidateItem();
351 qreal m_minimumWidth;
352 qreal m_minimumHeight;
353 qreal m_preferredWidth;
354 qreal m_preferredHeight;
355 qreal m_maximumWidth;
356 qreal m_maximumHeight;
358 qreal m_defaultMargins;
361 qreal m_fallbackWidth;
362 qreal m_fallbackHeight;
370 unsigned m_fillWidth : 1;
371 unsigned m_fillHeight : 1;
372 unsigned m_isFillWidthSet : 1;
373 unsigned m_isFillHeightSet : 1;
374 unsigned m_isMinimumWidthSet : 1;
375 unsigned m_isMinimumHeightSet : 1;
378 unsigned m_isMaximumWidthSet : 1;
379 unsigned m_isMaximumHeightSet : 1;
380 unsigned m_changesNotificationEnabled : 1;
381 unsigned m_isMarginsSet : 1;
382 unsigned m_isLeftMarginSet : 1;
383 unsigned m_isTopMarginSet : 1;
384 unsigned m_isRightMarginSet : 1;
385 unsigned m_isBottomMarginSet : 1;
386 unsigned m_isAlignmentSet : 1;
387 Qt::Alignment m_alignment;
388 int m_horizontalStretch;
389 int m_verticalStretch;
static bool testAttribute(Qt::ApplicationAttribute attribute)
Returns true if attribute attribute is set; otherwise returns false.
static constexpr Policy Preferred
static QQuickItemPrivate * get(QQuickItem *item)
The QQuickItem class provides the most basic of all visual items in \l {Qt Quick}.
ItemChange
Used in conjunction with QQuickItem::itemChange() to notify the item about certain types of changes.
void bottomMarginChanged()
qreal preferredWidth() const
bool isTopMarginSet() const
bool isHorizontalStretchFactorSet() const
bool isFillWidthSet() const
void preferredWidthChanged()
bool isRightMarginSet() const
QMarginsF qMargins() const
qreal minimumHeight() const
qreal preferredHeight() const
Qt::Alignment alignment() const
bool isPreferredHeightSet() const
bool isFillHeightSet() const
bool isMaximumHeightSet() const
bool isAlignmentSet() const
void minimumWidthChanged()
void preferredHeightChanged()
bool isLeftMarginSet() const
int horizontalStretchFactor() const
int verticalStretchFactor() const
bool isMaximumWidthSet() const
void maximumWidthChanged()
QQuickItemPrivate * itemForSizePolicy(bool isFillSet) const
qreal maximumWidth() const
void rightMarginChanged()
bool isMarginsSet() const
void maximumHeightChanged()
bool isBottomMarginSet() const
bool isExtentExplicitlySet(Qt::Orientation o, Qt::SizeHint whichSize) const
void minimumHeightChanged()
QMarginsF effectiveQMargins() const
qreal maximumHeight() const
void horizontalStretchFactorChanged()
bool isPreferredWidthSet() const
qreal bottomMargin() const
bool isMinimumWidthSet() const
bool setChangesNotificationEnabled(bool enabled)
qreal rightMargin() const
bool isMinimumHeightSet() const
bool isVerticalStretchFactorSet() const
void verticalStretchFactorChanged()
unsigned m_disableRearrange
unsigned m_dirtyArrangement
unsigned m_hasItemChangeListeners
virtual void setAlignment(QQuickItem *item, Qt::Alignment align)=0
EnsureLayoutItemsUpdatedOption
virtual void setStretchFactor(QQuickItem *item, int stretchFactor, Qt::Orientation orient)=0
virtual void updateLayoutItems()=0
virtual QQuickItem * itemAt(int index) const =0
virtual QSizeF sizeHint(Qt::SizeHint whichSizeHint) const =0
virtual int itemCount() const =0
\inmodule QtCore\reentrant
\macro QT_RESTRICTED_CAST_FROM_ASCII
Combined button and popup list for selecting options.
@ AA_QtQuickUseDefaultSizePolicy
EGLOutputLayerEXT EGLint EGLAttrib value
[5]
#define Q_DECLARE_FLAGS(Flags, Enum)
#define Q_DECLARE_OPERATORS_FOR_FLAGS(Flags)
#define Q_DECLARE_LOGGING_CATEGORY(name)
constexpr const T & qMax(const T &a, const T &b)
GLenum GLuint GLint level
GLint GLsizei GLsizei height
GLenum GLenum GLsizei const GLuint GLboolean enabled
GLenum GLuint GLenum GLsizei const GLchar * buf
GLenum GLenum GLsizei void GLsizei void * column
GLenum GLenum GLsizei void * row
GLenum GLenum GLsizei void GLsizei void void * span
#define QML_UNCREATABLE(REASON)
#define QML_NAMED_ELEMENT(NAME)
#define QML_ADDED_IN_VERSION(MAJOR, MINOR)
#define QML_ATTACHED(ATTACHED_TYPE)
QQuickLayoutAttached * attachedLayoutObject(QQuickItem *item, bool create=true)
label setAlignment(Qt::AlignLeft|Qt::AlignTop)
[0]