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
57 SizePolicyImplicit = 1,
62 Q_DECLARE_FLAGS(EnsureLayoutItemsUpdatedOptions, EnsureLayoutItemsUpdatedOption)
70 void componentComplete()
override;
75 virtual void invalidate(
QQuickItem * childItem =
nullptr);
78 void ensureLayoutItemsUpdated(EnsureLayoutItemsUpdatedOptions options = {})
const;
84 virtual void rearrange(
const QSizeF &);
92 void geometryChange(
const QRectF &newGeometry,
const QRectF &oldGeometry)
override;
94 void deactivateRecur();
96 bool invalidated()
const;
97 bool invalidatedArrangement()
const;
98 bool isMirrored()
const;
113 void updatePolish()
override;
122 void invalidateSenderItem();
125 unsigned m_inUpdatePolish : 1;
126 unsigned m_polishInsideUpdatePolish : 2;
140 , m_dirtyArrangement(true)
142 , m_disableRearrange(true)
143 , m_hasItemChangeListeners(
false) {}
145 void applySizeHints()
const;
169 Q_PROPERTY(
qreal minimumWidth READ minimumWidth WRITE setMinimumWidth NOTIFY minimumWidthChanged FINAL)
170 Q_PROPERTY(
qreal minimumHeight READ minimumHeight WRITE setMinimumHeight NOTIFY minimumHeightChanged FINAL)
171 Q_PROPERTY(
qreal preferredWidth READ preferredWidth WRITE setPreferredWidth NOTIFY preferredWidthChanged FINAL)
172 Q_PROPERTY(
qreal preferredHeight READ preferredHeight WRITE setPreferredHeight NOTIFY preferredHeightChanged FINAL)
173 Q_PROPERTY(
qreal maximumWidth READ maximumWidth WRITE setMaximumWidth NOTIFY maximumWidthChanged FINAL)
174 Q_PROPERTY(
qreal maximumHeight READ maximumHeight WRITE setMaximumHeight NOTIFY maximumHeightChanged FINAL)
175 Q_PROPERTY(
bool fillHeight READ fillHeight WRITE setFillHeight NOTIFY fillHeightChanged FINAL)
176 Q_PROPERTY(
bool fillWidth READ fillWidth WRITE setFillWidth NOTIFY fillWidthChanged FINAL)
177 Q_PROPERTY(
QQuickLayout::SizePolicy useDefaultSizePolicy READ useDefaultSizePolicy WRITE setUseDefaultSizePolicy NOTIFY useDefaultSizePolicyChanged FINAL)
180 Q_PROPERTY(
int rowSpan READ rowSpan WRITE setRowSpan NOTIFY rowSpanChanged FINAL)
181 Q_PROPERTY(
int columnSpan READ columnSpan WRITE setColumnSpan NOTIFY columnSpanChanged FINAL)
183 Q_PROPERTY(
int horizontalStretchFactor READ horizontalStretchFactor WRITE setHorizontalStretchFactor NOTIFY horizontalStretchFactorChanged FINAL)
184 Q_PROPERTY(
int verticalStretchFactor READ verticalStretchFactor WRITE setVerticalStretchFactor NOTIFY verticalStretchFactorChanged FINAL)
187 Q_PROPERTY(
qreal leftMargin READ leftMargin WRITE setLeftMargin RESET resetLeftMargin NOTIFY leftMarginChanged FINAL)
188 Q_PROPERTY(
qreal topMargin READ topMargin WRITE setTopMargin RESET resetTopMargin NOTIFY topMarginChanged FINAL)
189 Q_PROPERTY(
qreal rightMargin READ rightMargin WRITE setRightMargin RESET resetRightMargin NOTIFY rightMarginChanged FINAL)
190 Q_PROPERTY(
qreal bottomMargin READ bottomMargin WRITE setBottomMargin RESET resetBottomMargin NOTIFY bottomMarginChanged FINAL)
219 void setMinimumImplicitSize(
const QSizeF &sz);
220 void setMaximumImplicitSize(
const QSizeF &sz);
223 if (
auto *itemPriv = itemForSizePolicy(m_isFillWidthSet)) {
224 QLayoutPolicy::Policy hPolicy = itemPriv->sizePolicy().horizontalPolicy();
229 void setFillWidth(
bool fill);
233 if (
auto *itemPriv = itemForSizePolicy(m_isFillHeightSet)) {
234 QLayoutPolicy::Policy vPolicy = itemPriv->sizePolicy().verticalPolicy();
239 void setFillHeight(
bool fill);
249 void setRow(
int row);
252 void setColumn(
int column);
256 void setRowSpan(
int span);
258 void setColumnSpan(
int span);
265 void setHorizontalStretchFactor(
int stretchFactor);
268 void setVerticalStretchFactor(
int stretchFactor);
275 qreal leftMargin()
const {
return m_isLeftMarginSet ? m_margins.left() : m_defaultMargins; }
276 void setLeftMargin(
qreal m);
277 void resetLeftMargin();
280 qreal topMargin()
const {
return m_isTopMarginSet ? m_margins.top() : m_defaultMargins; }
281 void setTopMargin(
qreal m);
282 void resetTopMargin();
285 qreal rightMargin()
const {
return m_isRightMarginSet ? m_margins.right() : m_defaultMargins; }
286 void setRightMargin(
qreal m);
287 void resetRightMargin();
290 qreal bottomMargin()
const {
return m_isBottomMarginSet ? m_margins.bottom() : m_defaultMargins; }
291 void setBottomMargin(
qreal m);
292 void resetBottomMargin();
296 return QMarginsF(leftMargin(), topMargin(), rightMargin(), bottomMargin());
300 bool mirrored = parentLayout() && parentLayout()->isMirrored();
302 return QMarginsF(rightMargin(), topMargin(), leftMargin(), bottomMargin());
309 const bool old = m_changesNotificationEnabled;
310 m_changesNotificationEnabled =
enabled;
320 return o ==
Qt::Horizontal ? m_isMinimumWidthSet : m_isMinimumHeightSet;
322 return o ==
Qt::Horizontal ? m_isMaximumWidthSet : m_isMaximumHeightSet;
335 if (!isFillSet && qobject_cast<QQuickItem *>(
item()) &&
365 void invalidateItem();
369 qreal m_minimumWidth;
370 qreal m_minimumHeight;
371 qreal m_preferredWidth;
372 qreal m_preferredHeight;
373 qreal m_maximumWidth;
374 qreal m_maximumHeight;
376 qreal m_defaultMargins;
379 qreal m_fallbackWidth;
380 qreal m_fallbackHeight;
388 unsigned m_fillWidth : 1;
389 unsigned m_fillHeight : 1;
390 unsigned m_isFillWidthSet : 1;
391 unsigned m_isFillHeightSet : 1;
392 unsigned m_isUseDefaultSizePolicySet: 1;
394 unsigned m_isMinimumWidthSet : 1;
395 unsigned m_isMinimumHeightSet : 1;
398 unsigned m_isMaximumWidthSet : 1;
399 unsigned m_isMaximumHeightSet : 1;
400 unsigned m_changesNotificationEnabled : 1;
401 unsigned m_isMarginsSet : 1;
402 unsigned m_isLeftMarginSet : 1;
403 unsigned m_isTopMarginSet : 1;
404 unsigned m_isRightMarginSet : 1;
405 unsigned m_isBottomMarginSet : 1;
406 unsigned m_isAlignmentSet : 1;
407 Qt::Alignment m_alignment;
408 int m_horizontalStretch;
409 int m_verticalStretch;
static bool testAttribute(Qt::ApplicationAttribute attribute)
Returns true if attribute attribute is set; otherwise returns false.
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()
void useDefaultSizePolicyChanged()
bool isBottomMarginSet() const
QQuickLayout::SizePolicy useDefaultSizePolicy() 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]