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
qquickdesignersupport_p.h
Go to the documentation of this file.
1// Copyright (C) 2021 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 DESIGNERSUPPORT_H
6#define DESIGNERSUPPORT_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/qtquickglobal.h>
20#include <QtCore/QtGlobal>
21#include <QtCore/QHash>
22#include <QtCore/QRectF>
23#include <QtCore/private/qglobal_p.h>
24
25QT_BEGIN_NAMESPACE
26
27class QQuickItem;
28class QSGLayer;
29class QImage;
30class QTransform;
31class QQmlContext;
32class QQuickView;
33class QObject;
34class QQuickWindow;
35
36class Q_QUICK_EXPORT QQuickDesignerSupport
37{
38public:
39 typedef QByteArray PropertyName;
40 typedef QList<PropertyName> PropertyNameList;
41 typedef QByteArray TypeName;
42
43 enum DirtyType {
44 TransformOrigin = 0x00000001,
45 Transform = 0x00000002,
46 BasicTransform = 0x00000004,
47 Position = 0x00000008,
48 Size = 0x00000010,
49
50 ZValue = 0x00000020,
51 Content = 0x00000040,
52 Smooth = 0x00000080,
53 OpacityValue = 0x00000100,
54 ChildrenChanged = 0x00000200,
55 ChildrenStackingChanged = 0x00000400,
56 ParentChanged = 0x00000800,
57
58 Clip = 0x00001000,
59 Window = 0x00002000,
60
61 EffectReference = 0x00008000,
62 Visible = 0x00010000,
63 HideReference = 0x00020000,
64
65 TransformUpdateMask = TransformOrigin | Transform | BasicTransform | Position | Size | Window,
66 ComplexTransformUpdateMask = Transform | Window,
67 ContentUpdateMask = Size | Content | Smooth | Window,
68 ChildrenUpdateMask = ChildrenChanged | ChildrenStackingChanged | EffectReference | Window,
69 AllMask = TransformUpdateMask | ContentUpdateMask | ChildrenUpdateMask
70 };
71
72
73 QQuickDesignerSupport();
74 ~QQuickDesignerSupport();
75
76 void refFromEffectItem(QQuickItem *referencedItem, bool hide = true);
77 void derefFromEffectItem(QQuickItem *referencedItem, bool unhide = true);
78
79 QImage renderImageForItem(QQuickItem *referencedItem, const QRectF &boundingRect, const QSize &imageSize);
80
81 static bool isDirty(QQuickItem *referencedItem, DirtyType dirtyType);
82 static void addDirty(QQuickItem *referencedItem, DirtyType dirtyType);
83 static void resetDirty(QQuickItem *referencedItem);
84
85 static QTransform windowTransform(QQuickItem *referencedItem);
86 static QTransform parentTransform(QQuickItem *referencedItem);
87
88 static bool isAnchoredTo(QQuickItem *fromItem, QQuickItem *toItem);
89 static bool areChildrenAnchoredTo(QQuickItem *fromItem, QQuickItem *toItem);
90 static bool hasAnchor(QQuickItem *item, const QString &name);
91 static QQuickItem *anchorFillTargetItem(QQuickItem *item);
92 static QQuickItem *anchorCenterInTargetItem(QQuickItem *item);
93 static std::pair<QString, QObject*> anchorLineTarget(QQuickItem *item, const QString &name, QQmlContext *context);
94 static void resetAnchor(QQuickItem *item, const QString &name);
95 static void emitComponentCompleteSignalForAttachedProperty(QObject *item);
96
97 static QList<QObject*> statesForItem(QQuickItem *item);
98
99 static bool isComponentComplete(QQuickItem *item);
100
101 static int borderWidth(QQuickItem *item);
102
103 static void refreshExpressions(QQmlContext *context);
104
105 static void setRootItem(QQuickView *view, QQuickItem *item);
106
107 static bool isValidWidth(QQuickItem *item);
108 static bool isValidHeight(QQuickItem *item);
109
110 static void updateDirtyNode(QQuickItem *item);
111
112 static void activateDesignerMode();
113
114 static void disableComponentComplete();
115 static void enableComponentComplete();
116
117 static void polishItems(QQuickWindow *window);
118
119private:
120 QHash<QQuickItem*, QSGLayer*> m_itemTextureHash;
121};
122
123class Q_QUICK_EXPORT ComponentCompleteDisabler
124{
125public:
126 ComponentCompleteDisabler();
127
128 ~ComponentCompleteDisabler();
129};
130
132
133QT_END_NAMESPACE
134
135#endif // DESIGNERSUPPORT_H
int metaCall(QObject *o, QMetaObject::Call _c, int _id, void **_a) override
void createNewDynamicProperty(const QString &name)
static QQmlDesignerMetaObject * getNodeInstanceMetaObject(QObject *object, QQmlEngine *engine)
QDynamicMetaObjectData * dynamicMetaObjectParent() const
static void registerNotifyPropertyChangeCallBack(void(*callback)(QObject *, const QQuickDesignerSupport::PropertyName &propertyName))
void setValue(int id, const QVariant &value)
QVariant propertyWriteValue(int, const QVariant &) override
int createProperty(const char *name, const char *passAlong) override
int openMetaCall(QObject *o, QMetaObject::Call _c, int _id, void **_a)
Combined button and popup list for selecting options.
static QT_BEGIN_NAMESPACE QHash< QDynamicMetaObjectData *, bool > nodeInstanceMetaObjectList
static void(* notifyPropertyChangeCallBack)(QObject *, const QQuickDesignerSupport::PropertyName &propertyName)
QQuickDesignerSupport DesignerSupport
std::pair< QVariant, bool > & getDataRef(int idx)
bool hasData(int idx) const
QList< std::pair< QVariant, bool > > m_data
QVariant & getData(int idx)