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
qqstylekitlayout_p.h
Go to the documentation of this file.
1// Copyright (C) 2025 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
4#ifndef QQUICKUNIFIEDLAYOUT_H
5#define QQUICKUNIFIEDLAYOUT_H
6
7//
8// W A R N I N G
9// -------------
10//
11// This file is not part of the Qt API. It exists purely as an
12// implementation detail. This header file may change from version to
13// version without notice, or even be removed.
14//
15// We mean it.
16//
17
18
19#include <QtQml/QtQml>
20#include <QtCore/qtimer.h>
21#include <QtQuickTemplates2/private/qquickcontrol_p.h>
22
23QT_BEGIN_NAMESPACE
24
25class QQStyleKitLayoutItem : public QObject
26{
27 Q_OBJECT
28 Q_PROPERTY(QQuickItem *item READ item WRITE setItem NOTIFY itemChanged FINAL)
29 Q_PROPERTY(qreal x READ x NOTIFY xChanged FINAL)
30 Q_PROPERTY(qreal y READ y NOTIFY yChanged FINAL)
31 Q_PROPERTY(qreal width READ width NOTIFY widthChanged FINAL)
32 Q_PROPERTY(qreal height READ height NOTIFY heightChanged FINAL)
33 Q_PROPERTY(Qt::Alignment alignment READ alignment WRITE setAlignment NOTIFY alignmentChanged FINAL)
34 Q_PROPERTY(QMarginsF margins READ margins WRITE setMargins NOTIFY marginsChanged FINAL)
35 Q_PROPERTY(bool fillWidth READ fillWidth WRITE setFillWidth NOTIFY fillWidthChanged FINAL)
36 Q_PROPERTY(bool fillHeight READ fillHeight WRITE setFillHeight NOTIFY fillHeightChanged FINAL)
37 QML_NAMED_ELEMENT(StyleKitLayoutItem)
38
39public:
40 QQStyleKitLayoutItem(QObject *parent = nullptr);
41 QQuickItem *item() const;
42 void setItem(QQuickItem *item);
43
44 qreal x() const;
45 void setX(qreal x);
46 qreal y() const;
47 void setY(qreal y);
48 qreal width() const;
49 void setWidth(qreal width);
50 qreal height() const;
51 void setHeight(qreal height);
52
53 Qt::Alignment alignment() const;
54 void setAlignment(Qt::Alignment alignment);
55
56 QMarginsF margins() const;
57 void setMargins(const QMarginsF &margins);
58
59 bool fillWidth() const;
60 void setFillWidth(bool fill);
61
62 bool fillHeight() const;
63 void setFillHeight(bool fill);
64
65signals:
66 void itemChanged();
67 void xChanged();
68 void yChanged();
69 void widthChanged();
70 void heightChanged();
71 void alignmentChanged();
72 void marginsChanged();
73 void fillWidthChanged();
74 void fillHeightChanged();
75
76private:
77 QPointer<QQuickItem> m_item;
78 Qt::Alignment m_alignment = Qt::AlignLeft | Qt::AlignVCenter;
79 QMarginsF m_margins;
80 bool m_fillWidth = false;
81 bool m_fillHeight = false;
82 qreal m_x = 0;
83 qreal m_y = 0;
84 qreal m_width = 0;
85 qreal m_height = 0;
86};
87
89{
90 Q_OBJECT
91 Q_PROPERTY(QQuickItem *container READ container WRITE setContainer NOTIFY containerChanged FINAL)
100 Q_CLASSINFO("DefaultProperty", "layoutItems")
102
103public:
104 QQStyleKitLayout(QObject *parent = nullptr);
105
106 QQuickItem *container() const;
107 void setContainer(QQuickItem *item);
108
110
111 QMarginsF padding() const;
112
114 void setContentMargins(const QMarginsF &margins);
115
116 qreal spacing() const;
117 void setSpacing(qreal spacing);
118
119 bool isMirrored() const;
120 void setMirrored(bool mirrored);
121
122 qreal implicitWidth() const;
123 qreal implicitHeight() const;
124
125 void setImplicitWidth(qreal width);
126 void setImplicitHeight(qreal height);
127
128 bool isEnabled() const;
129 void setEnabled(bool enabled);
130
131signals:
142
143private:
144 void updateLayout();
145 void scheduleUpdate();
146
147 static void layoutItem_append(QQmlListProperty<QQStyleKitLayoutItem> *list, QQStyleKitLayoutItem *item);
148 static qsizetype layoutItem_count(QQmlListProperty<QQStyleKitLayoutItem> *list);
149 static QQStyleKitLayoutItem *layoutItem_at(QQmlListProperty<QQStyleKitLayoutItem> *list, qsizetype index);
150 static void layoutItem_clear(QQmlListProperty<QQStyleKitLayoutItem> *list);
151
152 QPointer<QQuickItem> m_container;
153 QList<QQStyleKitLayoutItem *> m_layoutItems;
154 QMarginsF m_contentMargins;
155 QMarginsF m_padding;
156 qreal m_spacing = 0;
157 qreal m_implicitWidth = 0;;
158 qreal m_implicitHeight = 0;
159
160 bool m_mirrored: 1;
161 bool m_enabled: 1;
162 bool m_updatingLayout: 1;
163
164 QTimer m_updateTimer;
165};
166
167QT_END_NAMESPACE
168#endif // QQUICKUNIFIEDLAYOUT_H
void setImplicitHeight(qreal height)
void mirroredChanged()
QMarginsF padding() const
void setSpacing(qreal spacing)
void contentMarginsChanged()
qreal implicitHeight() const
qreal implicitWidth() const
QMarginsF contentMargins() const
void setContentMargins(const QMarginsF &margins)
void setEnabled(bool enabled)
void setImplicitWidth(qreal width)
void setContainer(QQuickItem *item)
void implicitWidthChanged()
QQuickItem * container() const
QQmlListProperty< QQStyleKitLayoutItem > layoutItems()
void setMirrored(bool mirrored)
void layoutItemsChanged()
void implicitHeightChanged()
Combined button and popup list for selecting options.
static qreal height(QQStyleKitLayoutItem *li, qreal availableHeight=.0)
static qreal vAlignY(QQStyleKitLayoutItem *li, qreal containerY, qreal containerHeight)
static qreal totalWidth(const QList< QQStyleKitLayoutItem * > &items, qreal spacing)
static QT_BEGIN_NAMESPACE qreal width(QQStyleKitLayoutItem *li, qreal availableWidth=.0)
static qreal totalHeight(const QList< QQStyleKitLayoutItem * > &items)