Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
qquickpositioners_p_p.h
Go to the documentation of this file.
1// Copyright (C) 2016 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3// Qt-Security score:significant reason:default
4
5#ifndef QQUICKPOSITIONERS_P_P_H
6#define QQUICKPOSITIONERS_P_P_H
7
8//
9// W A R N I N G
10// -------------
11//
12// This file is not part of the Qt API. It exists purely as an
13// implementation detail. This header file may change from version to
14// version without notice, or even be removed.
15//
16// We mean it.
17//
18
19#include <QtQuick/private/qtquickglobal_p.h>
20
22
25
26#include <private/qlazilyallocated_p.h>
27
28#include <QtCore/qobject.h>
29#include <QtCore/qstring.h>
30#include <QtCore/qtimer.h>
31
32#include <algorithm>
33
34QT_BEGIN_NAMESPACE
35
36class QQuickItemViewTransitioner;
37
40{
41 Q_DECLARE_PUBLIC(QQuickBasePositioner)
42
43public:
58
61#if QT_CONFIG(quick_viewtransitions)
62 , transitioner(0)
63#endif
64 , positioningDirty(false)
66
67 {
68 }
69
70 void init(QQuickBasePositioner::PositionerType at)
71 {
72 type = at;
73 }
74
76
78#if QT_CONFIG(quick_viewtransitions)
80#endif
81
82 void watchChanges(QQuickItem *other);
83 void unwatchChanges(QQuickItem* other);
85 Q_Q(QQuickBasePositioner);
86 if (!positioningDirty) {
87 positioningDirty = true;
88 q->polish();
89 }
90 }
91
95
97
101 bool isLeftToRight() const {
102 if (type == QQuickBasePositioner::Vertical)
103 return true;
104 else
105 return effectiveLayoutMirror ? layoutDirection == Qt::RightToLeft : layoutDirection == Qt::LeftToRight;
106 }
107
108 void itemSiblingOrderChanged(QQuickItem* other) override
109 {
110 Q_UNUSED(other);
112 }
113
114 void itemGeometryChanged(QQuickItem *, QQuickGeometryChange change, const QRectF &) override
115 {
116 if (change.sizeChange())
118 }
119
120 void itemVisibilityChanged(QQuickItem *) override
121 {
123 }
124
125 void itemDestroyed(QQuickItem *item) override
126 {
127 Q_Q(QQuickBasePositioner);
128 auto it = std::find(q->positionedItems.begin(), q->positionedItems.end(), item);
129 if (it != q->positionedItems.end())
130 q->positionedItems.erase(it);
131 }
132
133 static Qt::LayoutDirection getLayoutDirection(const QQuickBasePositioner *positioner)
134 {
135 return positioner->d_func()->layoutDirection;
136 }
137
138 static Qt::LayoutDirection getEffectiveLayoutDirection(const QQuickBasePositioner *positioner)
139 {
140 if (positioner->d_func()->effectiveLayoutMirror)
141 return positioner->d_func()->layoutDirection == Qt::RightToLeft ? Qt::LeftToRight : Qt::RightToLeft;
142 else
143 return positioner->d_func()->layoutDirection;
144 }
145
147 {
148 }
149
150 inline qreal padding() const { return extra.isAllocated() ? extra->padding : 0.0; }
151 void setTopPadding(qreal value, bool reset = false);
152 void setLeftPadding(qreal value, bool reset = false);
153 void setRightPadding(qreal value, bool reset = false);
154 void setBottomPadding(qreal value, bool reset = false);
155};
156
157QT_END_NAMESPACE
158
159#endif // QQUICKPOSITIONERS_P_P_H
void watchChanges(QQuickItem *other)
void setLeftPadding(qreal value, bool reset=false)
void itemVisibilityChanged(QQuickItem *) override
static Qt::LayoutDirection getEffectiveLayoutDirection(const QQuickBasePositioner *positioner)
void setBottomPadding(qreal value, bool reset=false)
void itemSiblingOrderChanged(QQuickItem *other) override
void setRightPadding(qreal value, bool reset=false)
void setTopPadding(qreal value, bool reset=false)
void unwatchChanges(QQuickItem *other)
void init(QQuickBasePositioner::PositionerType at)
void itemDestroyed(QQuickItem *item) override
void itemGeometryChanged(QQuickItem *, QQuickGeometryChange change, const QRectF &) override
QLazilyAllocated< ExtraData > extra
static Qt::LayoutDirection getLayoutDirection(const QQuickBasePositioner *positioner)
For specifying a base for QQuickGraphics layouts.
\qmltype Flow \nativetype QQuickFlow \inqmlmodule QtQuick \inherits Item
\qmltype Grid \nativetype QQuickGrid \inqmlmodule QtQuick \inherits Item
void setIsFirstItem(bool isFirstItem)
\qmlattachedproperty bool QtQuick::Positioner::isFirstItem \qmlattachedproperty bool QtQuick::Positio...
void setIsLastItem(bool isLastItem)
\qmltype Row \nativetype QQuickRow \inqmlmodule QtQuick \inherits Item
QT_REQUIRE_CONFIG(animation)
static QT_BEGIN_NAMESPACE const QQuickItemPrivate::ChangeTypes positionerWatchedChanges
QT_REQUIRE_CONFIG(quick_positioners)