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
qqmlengine.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
4
5#ifndef QQMLENGINE_H
6#define QQMLENGINE_H
7
8#include <QtCore/qurl.h>
9#include <QtCore/qobject.h>
10#include <QtCore/qmap.h>
11#include <QtQml/qjsengine.h>
12#include <QtQml/qqml.h>
13#include <QtQml/qqmlerror.h>
14#include <QtQml/qqmlabstracturlinterceptor.h>
15
17
18class Q_QML_EXPORT QQmlImageProviderBase : public QObject
19{
20 Q_OBJECT
21public:
22 enum ImageType : int {
23 Invalid = 0,
24 Image,
25 Pixmap,
26 Texture,
27 ImageResponse,
28 };
29
30 enum Flag {
31 ForceAsynchronousImageLoading = 0x01
32 };
33 Q_DECLARE_FLAGS(Flags, Flag)
34
35 virtual ~QQmlImageProviderBase();
36
37 virtual ImageType imageType() const = 0;
38 virtual Flags flags() const = 0;
39
40private:
41 friend class QQuickImageProvider;
42 QQmlImageProviderBase();
43};
44Q_DECLARE_OPERATORS_FOR_FLAGS(QQmlImageProviderBase::Flags)
45
46class QQmlComponent;
48class QQmlExpression;
49class QQmlContext;
50class QQmlType;
51class QUrl;
52#if QT_CONFIG(qml_network)
53class QNetworkAccessManager;
54class QQmlNetworkAccessManagerFactory;
55#endif
56class QQmlIncubationController;
57class Q_QML_EXPORT QQmlEngine : public QJSEngine
58{
59 Q_PROPERTY(QString offlineStoragePath READ offlineStoragePath WRITE setOfflineStoragePath NOTIFY offlineStoragePathChanged)
60 Q_OBJECT
61public:
62 explicit QQmlEngine(QObject *p = nullptr);
63 ~QQmlEngine() override;
64
65 QQmlContext *rootContext() const;
66
67 void clearComponentCache();
68 void trimComponentCache();
69 void clearSingletons();
70
71 QStringList importPathList() const;
72 void setImportPathList(const QStringList &paths);
73 void addImportPath(const QString& dir);
74
75 QStringList pluginPathList() const;
76 void setPluginPathList(const QStringList &paths);
77 void addPluginPath(const QString& dir);
78
79#if QT_DEPRECATED_SINCE(6, 0)
80 QT_DEPRECATED bool addNamedBundle(const QString &, const QString &) { return false; }
81#endif
82
83#if QT_CONFIG(library)
84#if QT_DEPRECATED_SINCE(6, 4)
85 QT_DEPRECATED_VERSION_X_6_4("Import the module from QML instead")
86 bool importPlugin(const QString &filePath, const QString &uri, QList<QQmlError> *errors);
87#endif
88#endif
89
90#if QT_CONFIG(qml_network)
91 void setNetworkAccessManagerFactory(QQmlNetworkAccessManagerFactory *);
92 QQmlNetworkAccessManagerFactory *networkAccessManagerFactory() const;
93
94 QNetworkAccessManager *networkAccessManager() const;
95#endif
96
97#if QT_DEPRECATED_SINCE(6, 0)
98 QT_DEPRECATED void setUrlInterceptor(QQmlAbstractUrlInterceptor* urlInterceptor)
99 {
100 addUrlInterceptor(urlInterceptor);
101 }
102 QT_DEPRECATED QQmlAbstractUrlInterceptor *urlInterceptor() const;
103#endif
104
105 void addUrlInterceptor(QQmlAbstractUrlInterceptor *urlInterceptor);
106 void removeUrlInterceptor(QQmlAbstractUrlInterceptor *urlInterceptor);
107 QList<QQmlAbstractUrlInterceptor *> urlInterceptors() const;
108 QUrl interceptUrl(const QUrl &url, QQmlAbstractUrlInterceptor::DataType type) const;
109
110 void addImageProvider(const QString &id, QQmlImageProviderBase *);
111 QQmlImageProviderBase *imageProvider(const QString &id) const;
112 void removeImageProvider(const QString &id);
113
114 void setIncubationController(QQmlIncubationController *);
115 QQmlIncubationController *incubationController() const;
116
117 void setOfflineStoragePath(const QString& dir);
118 QString offlineStoragePath() const;
119 QString offlineStorageDatabaseFilePath(const QString &databaseName) const;
120
121 QUrl baseUrl() const;
122 void setBaseUrl(const QUrl &);
123
124 bool outputWarningsToStandardError() const;
125 void setOutputWarningsToStandardError(bool);
126
127 void markCurrentFunctionAsTranslationBinding();
128
129 template<typename T>
130 T singletonInstance(int qmlTypeId);
131
132 template<typename T>
133 T singletonInstance(QAnyStringView moduleName, QAnyStringView typeName);
134
135 void captureProperty(QObject *object, const QMetaProperty &property) const;
136
137public Q_SLOTS:
138 void retranslate();
139
140Q_SIGNALS:
141 void offlineStoragePathChanged();
142
143public:
144 static QQmlContext *contextForObject(const QObject *);
145 static void setContextForObject(QObject *, QQmlContext *);
146
147protected:
148 QQmlEngine(QQmlEnginePrivate &dd, QObject *p);
149 bool event(QEvent *) override;
150
151Q_SIGNALS:
152 void quit();
153 void exit(int retCode);
154 void warnings(const QList<QQmlError> &warnings);
155
156private:
157 Q_DISABLE_COPY(QQmlEngine)
158 Q_DECLARE_PRIVATE(QQmlEngine)
159};
160
161template<>
162Q_QML_EXPORT QJSValue QQmlEngine::singletonInstance<QJSValue>(int qmlTypeId);
163
164template<typename T>
165T QQmlEngine::singletonInstance(int qmlTypeId) {
166 return qobject_cast<T>(singletonInstance<QJSValue>(qmlTypeId).toQObject());
167}
168
169template<>
170Q_QML_EXPORT QJSValue QQmlEngine::singletonInstance<QJSValue>(QAnyStringView uri, QAnyStringView typeName);
171
172template<typename T>
173T QQmlEngine::singletonInstance(QAnyStringView uri, QAnyStringView typeName)
174{
175 return qobject_cast<T>(singletonInstance<QJSValue>(uri, typeName).toQObject());
176}
177
178QT_END_NAMESPACE
179
180#endif // QQMLENGINE_H
The QJSValue class acts as a container for Qt/JavaScript data types.
Definition qjsvalue.h:32
The QQmlEngineExtensionPlugin class provides an abstract base for custom QML extension plugins.
The QQmlEngine class provides an environment for instantiating QML components.
Definition qqmlengine.h:58
The QQmlExtensionPlugin class provides an abstract base for custom QML extension plugins with custom ...
The QQmlImageProviderBase class is used to register image providers in the QML engine.
Definition qqmlengine.h:19
friend class QQmlEnginePrivate
Combined button and popup list for selecting options.