73 Q_PROPERTY(qreal spacing READ spacing WRITE setSpacing NOTIFY spacingChanged)
74#if QT_CONFIG(quick_viewtransitions)
75 Q_PROPERTY(QQuickTransition *populate READ populate WRITE setPopulate NOTIFY populateChanged)
76 Q_PROPERTY(QQuickTransition *move READ move WRITE setMove NOTIFY moveChanged)
77 Q_PROPERTY(QQuickTransition *add READ add WRITE setAdd NOTIFY addChanged)
80 Q_PROPERTY(qreal padding READ padding WRITE setPadding RESET resetPadding NOTIFY paddingChanged REVISION(2, 6))
81 Q_PROPERTY(qreal topPadding READ topPadding WRITE setTopPadding RESET resetTopPadding NOTIFY topPaddingChanged REVISION(2, 6))
82 Q_PROPERTY(qreal leftPadding READ leftPadding WRITE setLeftPadding RESET resetLeftPadding NOTIFY leftPaddingChanged REVISION(2, 6))
83 Q_PROPERTY(qreal rightPadding READ rightPadding WRITE setRightPadding RESET resetRightPadding NOTIFY rightPaddingChanged REVISION(2, 6))
84 Q_PROPERTY(qreal bottomPadding READ bottomPadding WRITE setBottomPadding RESET resetBottomPadding NOTIFY bottomPaddingChanged REVISION(2, 6))
86 QML_NAMED_ELEMENT(Positioner)
87 QML_ADDED_IN_VERSION(2, 0)
88 QML_UNCREATABLE(
"Positioner is an abstract type that is only available as an attached property.")
89 QML_ATTACHED(QQuickPositionerAttached)
92 enum PositionerType { None = 0x0, Horizontal = 0x1, Vertical = 0x2, Both = 0x3 };
94 QQuickBasePositioner(PositionerType, QQuickItem *parent);
95 ~QQuickBasePositioner();
97 qreal spacing()
const;
98 void setSpacing(qreal);
100#if QT_CONFIG(quick_viewtransitions)
101 QQuickTransition *populate()
const;
102 void setPopulate(QQuickTransition *);
104 QQuickTransition *move()
const;
105 void setMove(QQuickTransition *);
107 QQuickTransition *add()
const;
108 void setAdd(QQuickTransition *);
111 static QQuickPositionerAttached *qmlAttachedProperties(QObject *obj);
113 void updateAttachedProperties(QQuickPositionerAttached *specificProperty =
nullptr, QQuickItem *specificPropertyOwner =
nullptr)
const;
115 qreal padding()
const;
116 void setPadding(qreal padding);
119 qreal topPadding()
const;
120 void setTopPadding(qreal padding);
121 void resetTopPadding();
123 qreal leftPadding()
const;
124 void setLeftPadding(qreal padding);
125 void resetLeftPadding();
127 qreal rightPadding()
const;
128 void setRightPadding(qreal padding);
129 void resetRightPadding();
131 qreal bottomPadding()
const;
132 void setBottomPadding(qreal padding);
133 void resetBottomPadding();
135 Q_REVISION(2, 9) Q_INVOKABLE
void forceLayout();
138 QQuickBasePositioner(QQuickBasePositionerPrivate &dd, PositionerType at, QQuickItem *parent);
139 void componentComplete() override;
140 void itemChange(ItemChange,
const ItemChangeData &) override;
142 void updatePolish() override;
145 void spacingChanged();
146 void populateChanged();
149 Q_REVISION(2, 6)
void paddingChanged();
150 Q_REVISION(2, 6)
void topPaddingChanged();
151 Q_REVISION(2, 6)
void leftPaddingChanged();
152 Q_REVISION(2, 6)
void rightPaddingChanged();
153 Q_REVISION(2, 6)
void bottomPaddingChanged();
154 Q_REVISION(2, 9)
void positioningComplete();
157 void prePositioning();
160 virtual void doPositioning(QSizeF *contentSize)=0;
161 virtual void reportConflictingAnchors()=0;
166 PositionedItem(QQuickItem *i);
167 bool operator==(
const PositionedItem &other)
const {
return other.item == item; }
168 bool operator==(
const QQuickItem *other)
const {
return other ==
this->item; }
173 void moveTo(
const QPointF &pos);
175#if QT_CONFIG(quick_viewtransitions)
176 void transitionNextReposition(QQuickItemViewTransitioner *transitioner, QQuickItemViewTransitioner::TransitionType type,
bool asTarget);
177 bool prepareTransition(QQuickItemViewTransitioner *transitioner,
const QRectF &viewBounds);
178 void startTransition(QQuickItemViewTransitioner *transitioner);
181 void updatePadding(qreal lp, qreal tp, qreal rp, qreal bp);
184#if QT_CONFIG(quick_viewtransitions)
185 std::unique_ptr<QQuickItemViewTransitionableItem> transitionableItem;
197 std::vector<PositionedItem> positionedItems;
198 std::vector<PositionedItem> unpositionedItems;
200 void positionItem(qreal x, qreal y, PositionedItem *target);
201 void positionItemX(qreal, PositionedItem *target);
202 void positionItemY(qreal, PositionedItem *target);
205 Q_DISABLE_COPY(QQuickBasePositioner)
206 Q_DECLARE_PRIVATE(QQuickBasePositioner)
223class Q_QUICK_EXPORT
QQuickRow:
public QQuickBasePositioner
226 Q_PROPERTY(Qt::LayoutDirection layoutDirection READ layoutDirection WRITE setLayoutDirection NOTIFY layoutDirectionChanged)
227 Q_PROPERTY(Qt::LayoutDirection effectiveLayoutDirection READ effectiveLayoutDirection NOTIFY effectiveLayoutDirectionChanged)
228 QML_NAMED_ELEMENT(Row)
229 QML_ADDED_IN_VERSION(2, 0)
232 QQuickRow(QQuickItem *parent=
nullptr);
234 Qt::LayoutDirection layoutDirection()
const;
235 void setLayoutDirection (Qt::LayoutDirection);
236 Qt::LayoutDirection effectiveLayoutDirection()
const;
239 void layoutDirectionChanged();
240 void effectiveLayoutDirectionChanged();
243 void doPositioning(QSizeF *contentSize) override;
244 void reportConflictingAnchors() override;
246 Q_DECLARE_PRIVATE(QQuickRow)
253 Q_PROPERTY(
int rows READ rows WRITE setRows NOTIFY rowsChanged)
254 Q_PROPERTY(
int columns READ columns WRITE setColumns NOTIFY columnsChanged)
255 Q_PROPERTY(qreal rowSpacing READ rowSpacing WRITE setRowSpacing NOTIFY rowSpacingChanged RESET resetRowSpacing)
256 Q_PROPERTY(qreal columnSpacing READ columnSpacing WRITE setColumnSpacing NOTIFY columnSpacingChanged RESET resetColumnSpacing)
257 Q_PROPERTY(Flow flow READ flow WRITE setFlow NOTIFY flowChanged)
258 Q_PROPERTY(Qt::LayoutDirection layoutDirection READ layoutDirection WRITE setLayoutDirection NOTIFY layoutDirectionChanged)
259 Q_PROPERTY(Qt::LayoutDirection effectiveLayoutDirection READ effectiveLayoutDirection NOTIFY effectiveLayoutDirectionChanged)
260 Q_PROPERTY(HAlignment horizontalItemAlignment READ hItemAlign WRITE setHItemAlign NOTIFY horizontalAlignmentChanged REVISION(2, 1))
261 Q_PROPERTY(HAlignment effectiveHorizontalItemAlignment READ effectiveHAlign NOTIFY effectiveHorizontalAlignmentChanged REVISION(2, 1))
262 Q_PROPERTY(VAlignment verticalItemAlignment READ vItemAlign WRITE setVItemAlign NOTIFY verticalAlignmentChanged REVISION(2, 1))
263 QML_NAMED_ELEMENT(Grid)
264 QML_ADDED_IN_VERSION(2, 0)
267 QQuickGrid(QQuickItem *parent=
nullptr);
269 int rows()
const {
return m_rows; }
270 void setRows(
const int rows);
272 int columns()
const {
return m_columns; }
273 void setColumns(
const int columns);
275 qreal rowSpacing()
const {
return m_rowSpacing; }
276 void setRowSpacing(qreal);
277 void resetRowSpacing() { m_useRowSpacing =
false; }
279 qreal columnSpacing()
const {
return m_columnSpacing; }
280 void setColumnSpacing(qreal);
281 void resetColumnSpacing() { m_useColumnSpacing =
false; }
283 enum Flow { LeftToRight, TopToBottom };
288 Qt::LayoutDirection layoutDirection()
const;
289 void setLayoutDirection (Qt::LayoutDirection);
290 Qt::LayoutDirection effectiveLayoutDirection()
const;
292 enum HAlignment { AlignLeft = Qt::AlignLeft,
293 AlignRight = Qt::AlignRight,
294 AlignHCenter = Qt::AlignHCenter};
296 enum VAlignment { AlignTop = Qt::AlignTop,
297 AlignBottom = Qt::AlignBottom,
298 AlignVCenter = Qt::AlignVCenter };
301 HAlignment hItemAlign()
const;
302 void setHItemAlign(HAlignment align);
303 HAlignment effectiveHAlign()
const;
305 VAlignment vItemAlign()
const;
306 void setVItemAlign(VAlignment align);
310 void columnsChanged();
312 void layoutDirectionChanged();
313 void effectiveLayoutDirectionChanged();
314 void rowSpacingChanged();
315 void columnSpacingChanged();
316 Q_REVISION(2, 1)
void horizontalAlignmentChanged(QQuickGrid::HAlignment alignment);
317 Q_REVISION(2, 1)
void effectiveHorizontalAlignmentChanged(QQuickGrid::HAlignment alignment);
318 Q_REVISION(2, 1)
void verticalAlignmentChanged(QQuickGrid::VAlignment alignment);
321 void doPositioning(QSizeF *contentSize) override;
322 void reportConflictingAnchors() override;
328 qreal m_columnSpacing;
329 bool m_useRowSpacing;
330 bool m_useColumnSpacing;
332 HAlignment m_hItemAlign;
333 VAlignment m_vItemAlign;
334 Q_DECLARE_PRIVATE(QQuickGrid)
341 Q_PROPERTY(Flow flow READ flow WRITE setFlow NOTIFY flowChanged)
342 Q_PROPERTY(Qt::LayoutDirection layoutDirection READ layoutDirection WRITE setLayoutDirection NOTIFY layoutDirectionChanged)
343 Q_PROPERTY(Qt::LayoutDirection effectiveLayoutDirection READ effectiveLayoutDirection NOTIFY effectiveLayoutDirectionChanged)
344 QML_NAMED_ELEMENT(Flow)
345 QML_ADDED_IN_VERSION(2, 0)
347 QQuickFlow(QQuickItem *parent=
nullptr);
349 enum Flow { LeftToRight, TopToBottom };
354 Qt::LayoutDirection layoutDirection()
const;
355 void setLayoutDirection (Qt::LayoutDirection);
356 Qt::LayoutDirection effectiveLayoutDirection()
const;
360 void layoutDirectionChanged();
361 void effectiveLayoutDirectionChanged();
364 void doPositioning(QSizeF *contentSize) override;
365 void reportConflictingAnchors() override;
367 QQuickFlow(QQuickFlowPrivate &dd, QQuickItem *parent);
369 Q_DECLARE_PRIVATE(QQuickFlow)