QQmlEngine Class The QQmlEngine class provides an environment for instantiating QML components. More...  
 Header:
 #include <QQmlEngine> 


 qmake:
 QT += qml


 Since:
 Qt 5.0


 Inherits:
 QJSEngine



 Inherited By:
 QQmlApplicationEngine 


 List of all members, including inherited members  Public Types  
 enum 

ObjectOwnership { CppOwnership, JavaScriptOwnership }
  Properties  
offlineStoragePath : QString   1 property inherited from QObject
  Public Functions  
 

QQmlEngine(QObject *parent = Q_NULLPTR)
 
 virtual 

~QQmlEngine()
 
 void 

addImageProvider(const QString &providerId, QQmlImageProviderBase *provider)
 
 void 

addImportPath(const QString &path)
 
 void 

addPluginPath(const QString &path)
 
 QUrl 

baseUrl() const
 
 void 

clearComponentCache()
 
 QQmlImageProviderBase *

imageProvider(const QString &providerId) const
 
 QStringList 

importPathList() const
 
 bool 

importPlugin(const QString &filePath, const QString &uri, QList<QQmlError> *errors)
 
 QQmlIncubationController *

incubationController() const
 
 QNetworkAccessManager *

networkAccessManager() const
 
 QQmlNetworkAccessManagerFactory *

networkAccessManagerFactory() const
 
 QString 

offlineStorageDatabaseFilePath(const QString &databaseName) const
 
 QString 

offlineStoragePath() const
 
 bool 

outputWarningsToStandardError() const
 
 QStringList 

pluginPathList() const
 
 void 

removeImageProvider(const QString &providerId)
 
 QQmlContext *

rootContext() const
 
 void 

setBaseUrl(const QUrl &url)
 
 void 

setImportPathList(const QStringList &paths)
 
 void 

setIncubationController(QQmlIncubationController *controller)
 
 void 

setNetworkAccessManagerFactory(QQmlNetworkAccessManagerFactory *factory)
 
 void 

setOfflineStoragePath(const QString &dir)
 
 void 

setOutputWarningsToStandardError(bool enabled)
 
 void 

setPluginPathList(const QStringList &paths)
 
 void 

trimComponentCache()
   11 public functions inherited from QJSEngine
 32 public functions inherited from QObject
  Signals  
 void 

exit(int retCode)
 
 void 

quit()
 
 void 

warnings(const QList<QQmlError> &warnings)
   2 signals inherited from QObject
  Static Public Members  
 QQmlContext *

contextForObject(const QObject *object)
 
 ObjectOwnership 

objectOwnership(QObject *object)
 
 void 

setContextForObject(QObject *object, QQmlContext *context)
 
 void 

setObjectOwnership(QObject *object, ObjectOwnership ownership)
   11 static public members inherited from QObject
  Reimplemented Protected Functions  
 virtual bool 

event(QEvent *e) override
   9 protected functions inherited from QObject
  Related Non-Members  
 QObject *

qmlAttachedPropertiesObject(const QObject *attachee, bool create = true)
 
 void 

qmlClearTypeRegistrations()
 
 QQmlContext *

qmlContext(const QObject *object)
 
 QQmlInfo 

qmlDebug(const QObject *object)
 
 QQmlEngine *

qmlEngine(const QObject *object)
 
 QQmlInfo 

qmlInfo(const QObject *object)
 
 bool 

qmlProtectModule(const char *uri, int majVersion)
 
 int 

qmlRegisterExtendedType(const char *uri, int versionMajor, int versionMinor, const char *qmlName)
 
 int 

qmlRegisterExtendedUncreatableType(const char *uri, int versionMajor, int versionMinor, const char *qmlName, const QString &reason)
 
 int 

qmlRegisterInterface(const char *typeName)
 
 void 

qmlRegisterModule(const char *uri, int versionMajor, int versionMinor)
 
 int 

qmlRegisterRevision(const char *uri, int versionMajor, int versionMinor)
 
 int 

qmlRegisterSingletonType(const char *uri, int versionMajor, int versionMinor, const char *typeName, QJSValue(* ) ( QQmlEngine *, QJSEngine * ) callback)
 
 int 

qmlRegisterSingletonType(const char *uri, int versionMajor, int versionMinor, const char *typeName, QObject *(* ) ( QQmlEngine *, QJSEngine * ) callback)
 
 int 

qmlRegisterSingletonType(const QUrl &url, const char *uri, int versionMajor, int versionMinor, const char *qmlName)
 
 int 

qmlRegisterType()
 
 int 

qmlRegisterType(const char *uri, int versionMajor, int versionMinor, const char *qmlName)
 
 int 

qmlRegisterType(const QUrl &url, const char *uri, int versionMajor, int versionMinor, const char *qmlName)
 
 int 

qmlRegisterTypeNotAvailable(const char *uri, int versionMajor, int versionMinor, const char *qmlName, const QString &message)
 
 int 

qmlRegisterUncreatableMetaObject(const QMetaObject &staticMetaObject, const char *uri, int versionMajor, int versionMinor, const char *qmlName, const QString &reason)
 
 int 

qmlRegisterUncreatableType(const char *uri, int versionMajor, int versionMinor, const char *qmlName, const QString &message)
 
 QQmlInfo 

qmlWarning(const QObject *object)
  Macros  
 

QML_DECLARE_TYPE()
 
 

QML_DECLARE_TYPEINFO(Type, Flags)
  Additional Inherited Members  1 public slot inherited from QObject
 9 protected functions inherited from QObject
  Detailed Description The QQmlEngine class provides an environment for instantiating QML components. Each QML component is instantiated in a QQmlContext. QQmlContext's are essential for passing data to QML components. In QML, contexts are arranged hierarchically and this hierarchy is managed by the QQmlEngine. Prior to creating any QML components, an application must have created a QQmlEngine to gain access to a QML context. The following example shows how to create a simple Text item. QQmlEngine engine;
QQmlComponent component(&engine);
component.setData("import QtQuick 2.0\nText { text: \"Hello world!\" }", QUrl());
QQuickItem *item = qobject_cast<QQuickItem *>(component.create());

//add item to view, etc
... In this case, the Text item will be created in the engine's root context. Note that the Qt Quick 1 version is called QDeclarativeEngine. See also QQmlComponent, QQmlContext, and QML Global Object. Member Type Documentation 
enum QQmlEngin8b7c:f320:99b9:690f:4595:cd17:293a:c069ObjectOwnership
 ObjectOwnership controls whether or not QML automatically destroys the QObject when the corresponding JavaScript object is garbage collected by the engine. The two ownership options are: 

Constant
Value
Description
 
QQmlEngin8b7c:f320:99b9:690f:4595:cd17:293a:c069CppOwnership
0
The object is owned by C++ code and QML will never delete it. The JavaScript destroy() method cannot be used on these objects. This option is similar to QScriptEngin8b7c:f320:99b9:690f:4595:cd17:293a:c069QtOwnership.
 
QQmlEngin8b7c:f320:99b9:690f:4595:cd17:293a:c069JavaScriptOwnership
1
The object is owned by JavaScript. When the object is returned to QML as the return value of a method call, QML will track it and delete it if there are no remaining JavaScript references to it and it has no QObject8b7c:f320:99b9:690f:4595:cd17:293a:c069parent(). An object tracked by one QQmlEngine will be deleted during that QQmlEngine's destructor. Thus, JavaScript references between objects with JavaScriptOwnership from two different engines will not be valid if one of these engines is deleted. This option is similar to QScriptEngin8b7c:f320:99b9:690f:4595:cd17:293a:c069ScriptOwnership.
  Generally an application doesn't need to set an object's ownership explicitly. QML uses a heuristic to set the default ownership. By default, an object that is created by QML has JavaScriptOwnership. The exception to this are the root objects created by calling QQmlComponent8b7c:f320:99b9:690f:4595:cd17:293a:c069reate() or QQmlComponent8b7c:f320:99b9:690f:4595:cd17:293a:c069ginCreate(), which have CppOwnership by default. The ownership of these root-level objects is considered to have been transferred to the C++ caller. Objects not-created by QML have CppOwnership by default. The exception to this are objects returned from C++ method calls; their ownership will be set to JavaScriptOwnership. This applies only to explicit invocations of Q_INVOKABLE methods or slots, but not to property getter invocations. Calling setObjectOwnership() overrides the default ownership heuristic used by QML.  Property Documentation 
offlineStoragePath : QString
 This property holds the directory for storing offline user data Returns the directory where SQL and other offline storage is placed. The SQL databases created with openDatabase() are stored here. The default is QML/OfflineStorage in the platform-standard user application data directory. Note that the path may not currently exist on the filesystem, so callers wanting to create new files at this location should create it first - see QDir8b7c:f320:99b9:690f:4595:cd17:293a:c069mkpath(). Access functions:  
 QString 

offlineStoragePath() const
 
 void 

setOfflineStoragePath(const QString &dir)
   Member Function Documentation 
QQmlEngin8b7c:f320:99b9:690f:4595:cd17:293a:c069QQmlEngine(QObject *parent = Q_NULLPTR) Create a new QQmlEngine with the given parent. 
[virtual] QQmlEngin8b7c:f320:99b9:690f:4595:cd17:293a:c069~QQmlEngine() Destroys the QQmlEngine. Any QQmlContext's created on this engine will be invalidated, but not destroyed (unless they are parented to the QQmlEngine object). See QJSEngine docs for details on cleaning up the JS engine. 
void QQmlEngin8b7c:f320:99b9:690f:4595:cd17:293a:c069addImageProvider(const QString &providerId, QQmlImageProviderBase *provider) Sets the provider to use for images requested via the image: url scheme, with host providerId. The QQmlEngine takes ownership of provider. Image providers enable support for pixmap and threaded image requests. See the QQuickImageProvider documentation for details on implementing and using image providers. All required image providers should be added to the engine before any QML sources files are loaded. See also removeImageProvider(), QQuickImageProvider, and QQmlImageProviderBase. 
void QQmlEngin8b7c:f320:99b9:690f:4595:cd17:293a:c069addImportPath(const QString &path) Adds path as a directory where the engine searches for installed modules in a URL-based directory structure. The path may be a local filesystem directory, a Qt Resource path (:/imports), a Qt Resource url (qrc:/imports) or a URL. The path will be converted into canonical form before it is added to the import path list. The newly added path will be first in the importPathList(). See also setImportPathList() and QML Modules. 
void QQmlEngin8b7c:f320:99b9:690f:4595:cd17:293a:c069addPluginPath(const QString &path) Adds path as a directory where the engine searches for native plugins for imported modules (referenced in the qmldir file). By default, the list contains only ., i.e. the engine searches in the directory of the qmldir file itself. The newly added path will be first in the pluginPathList(). See also setPluginPathList(). 
QUrl QQmlEngin8b7c:f320:99b9:690f:4595:cd17:293a:c069baseUrl() const Return the base URL for this engine. The base URL is only used to resolve components when a relative URL is passed to the QQmlComponent constructor. If a base URL has not been explicitly set, this method returns the application's current working directory. See also setBaseUrl(). 
void QQmlEngin8b7c:f320:99b9:690f:4595:cd17:293a:c069clearComponentCache() Clears the engine's internal component cache. This function causes the property metadata of all components previously loaded by the engine to be destroyed. All previously loaded components and the property bindings for all extant objects created from those components will cease to function. This function returns the engine to a state where it does not contain any loaded component data. This may be useful in order to reload a smaller subset of the previous component set, or to load a new version of a previously loaded component. Once the component cache has been cleared, components must be loaded before any new objects can be created. See also trimComponentCache(). 
[static] QQmlContext *QQmlEngin8b7c:f320:99b9:690f:4595:cd17:293a:c069contextForObject(const QObject *object) Returns the QQmlContext for the object, or 0 if no context has been set. When the QQmlEngine instantiates a QObject, the context is set automatically. See also setContextForObject(), qmlContext(), and qmlEngine(). 
[override virtual protected] bool QQmlEngin8b7c:f320:99b9:690f:4595:cd17:293a:c069event(QEvent *e) Reimplemented from QObject8b7c:f320:99b9:690f:4595:cd17:293a:c069vent(). 
[signal] void QQmlEngin8b7c:f320:99b9:690f:4595:cd17:293a:c069exit(int retCode) This signal is emitted when the QML loaded by the engine would like to exit from the event loop with the specified return code retCode. This function was introduced in Qt 5.8. See also quit(). 
QQmlImageProviderBase *QQmlEngin8b7c:f320:99b9:690f:4595:cd17:293a:c069imageProvider(const QString &providerId) const Returns the image provider set for providerId. Returns the provider if it was found; otherwise returns 0. See also QQuickImageProvider. 
QStringList QQmlEngin8b7c:f320:99b9:690f:4595:cd17:293a:c069importPathList() const Returns the list of directories where the engine searches for installed modules in a URL-based directory structure. For example, if /opt/MyApp/lib/imports is in the path, then QML that imports com.mycompany.Feature will cause the QQmlEngine to look in /opt/MyApp/lib/imports/com/mycompany/Feature/ for the components provided by that module. A qmldir file is required for defining the type version mapping and possibly QML extensions plugins. By default, the list contains the directory of the application executable, paths specified in the QML2_IMPORT_PATH environment variable, and the builtin Qml2ImportsPath from QLibraryInfo. See also addImportPath() and setImportPathList(). 
bool QQmlEngin8b7c:f320:99b9:690f:4595:cd17:293a:c069importPlugin(const QString &filePath, const QString &uri, QList<QQmlError> *errors) Imports the plugin named filePath with the uri provided. Returns true if the plugin was successfully imported; otherwise returns false. On failure and if non-null, the errors list will have any errors which occurred prepended to it. The plugin has to be a Qt plugin which implements the QQmlExtensionPlugin interface. 
QQmlIncubationController *QQmlEngin8b7c:f320:99b9:690f:4595:cd17:293a:c069incubationController() const Returns the currently set incubation controller, or 0 if no controller has been set. See also setIncubationController(). 
QNetworkAccessManager *QQmlEngin8b7c:f320:99b9:690f:4595:cd17:293a:c069networkAccessManager() const Returns a common QNetworkAccessManager which can be used by any QML type instantiated by this engine. If a QQmlNetworkAccessManagerFactory has been set and a QNetworkAccessManager has not yet been created, the QQmlNetworkAccessManagerFactory will be used to create the QNetworkAccessManager; otherwise the returned QNetworkAccessManager will have no proxy or cache set. See also setNetworkAccessManagerFactory(). 
QQmlNetworkAccessManagerFactory *QQmlEngin8b7c:f320:99b9:690f:4595:cd17:293a:c069networkAccessManagerFactory() const Returns the current QQmlNetworkAccessManagerFactory. See also setNetworkAccessManagerFactory(). 
[static] ObjectOwnership QQmlEngin8b7c:f320:99b9:690f:4595:cd17:293a:c069objectOwnership(QObject *object) Returns the ownership of object. See also setObjectOwnership(). 
QString QQmlEngin8b7c:f320:99b9:690f:4595:cd17:293a:c069offlineStorageDatabaseFilePath(const QString &databaseName) const Returns the file path where a Local Storage database with the identifier databaseName is (or would be) located. This function was introduced in Qt 5.9. See also LocalStorage.openDatabaseSync(). 
bool QQmlEngin8b7c:f320:99b9:690f:4595:cd17:293a:c069outputWarningsToStandardError() const Returns true if warning messages will be output to stderr in addition to being emitted by the warnings() signal, otherwise false. The default value is true. See also setOutputWarningsToStandardError(). 
QStringList QQmlEngin8b7c:f320:99b9:690f:4595:cd17:293a:c069pluginPathList() const Returns the list of directories where the engine searches for native plugins for imported modules (referenced in the qmldir file). By default, the list contains only ., i.e. the engine searches in the directory of the qmldir file itself. See also addPluginPath() and setPluginPathList(). 
[signal] void QQmlEngin8b7c:f320:99b9:690f:4595:cd17:293a:c069quit() This signal is emitted when the QML loaded by the engine would like to quit. See also exit(). 
void QQmlEngin8b7c:f320:99b9:690f:4595:cd17:293a:c069removeImageProvider(const QString &providerId) Removes the image provider for providerId. See also addImageProvider() and QQuickImageProvider. 
QQmlContext *QQmlEngin8b7c:f320:99b9:690f:4595:cd17:293a:c069rootContext() const Returns the engine's root context. The root context is automatically created by the QQmlEngine. Data that should be available to all QML component instances instantiated by the engine should be put in the root context. Additional data that should only be available to a subset of component instances should be added to sub-contexts parented to the root context. 
void QQmlEngin8b7c:f320:99b9:690f:4595:cd17:293a:c069setBaseUrl(const QUrl &url) Set the base URL for this engine to url. See also baseUrl(). 
[static] void QQmlEngin8b7c:f320:99b9:690f:4595:cd17:293a:c069setContextForObject(QObject *object, QQmlContext *context) Sets the QQmlContext for the object to context. If the object already has a context, a warning is output, but the context is not changed. When the QQmlEngine instantiates a QObject, the context is set automatically. See also contextForObject(). 
void QQmlEngin8b7c:f320:99b9:690f:4595:cd17:293a:c069setImportPathList(const QStringList &paths) Sets paths as the list of directories where the engine searches for installed modules in a URL-based directory structure. By default, the list contains the directory of the application executable, paths specified in the QML2_IMPORT_PATH environment variable, and the builtin Qml2ImportsPath from QLibraryInfo. See also importPathList() and addImportPath(). 
void QQmlEngin8b7c:f320:99b9:690f:4595:cd17:293a:c069setIncubationController(QQmlIncubationController *controller) Sets the engine's incubation controller. The engine can only have one active controller and it does not take ownership of it. See also incubationController(). 
void QQmlEngin8b7c:f320:99b9:690f:4595:cd17:293a:c069setNetworkAccessManagerFactory(QQmlNetworkAccessManagerFactory *factory) Sets the factory to use for creating QNetworkAccessManager(s). QNetworkAccessManager is used for all network access by QML. By implementing a factory it is possible to create custom QNetworkAccessManager with specialized caching, proxy and cookie support. The factory must be set before executing the engine. See also networkAccessManagerFactory(). 
[static] void QQmlEngin8b7c:f320:99b9:690f:4595:cd17:293a:c069setObjectOwnership(QObject *object, ObjectOwnership ownership) Sets the ownership of object. See also objectOwnership(). 
void QQmlEngin8b7c:f320:99b9:690f:4595:cd17:293a:c069setOutputWarningsToStandardError(bool enabled) Set whether warning messages will be output to stderr to enabled. If enabled is true, any warning messages generated by QML will be output to stderr and emitted by the warnings() signal. If enabled is false, only the warnings() signal will be emitted. This allows applications to handle warning output themselves. The default value is true. See also outputWarningsToStandardError(). 
void QQmlEngin8b7c:f320:99b9:690f:4595:cd17:293a:c069setPluginPathList(const QStringList &paths) Sets the list of directories where the engine searches for native plugins for imported modules (referenced in the qmldir file) to paths. By default, the list contains only ., i.e. the engine searches in the directory of the qmldir file itself. See also pluginPathList() and addPluginPath(). 
void QQmlEngin8b7c:f320:99b9:690f:4595:cd17:293a:c069trimComponentCache() Trims the engine's internal component cache. This function causes the property metadata of any loaded components which are not currently in use to be destroyed. A component is considered to be in use if there are any extant instances of the component itself, any instances of other components that use the component, or any objects instantiated by any of those components. See also clearComponentCache(). 
[signal] void QQmlEngin8b7c:f320:99b9:690f:4595:cd17:293a:c069warnings(const QList<QQmlError> &warnings) This signal is emitted when warnings messages are generated by QML.  Related Non-Members 
QObject *qmlAttachedPropertiesObject(const QObject *attachee, bool create = true) The form of this template function is: template<typename T> QObject *qmlAttachedPropertiesObject(const QObject *attachee, bool create = true) This returns the attached object instance that has been attached to the specified attachee by the attaching type T. If create is true and type T is a valid attaching type, this creates and returns a new attached object instance. Returns 0 if type T is not a valid attaching type, or if create is false and no attachment object instance has previously been created for attachee. See also Providing Attached Properties. 
void qmlClearTypeRegistrations() Clears all stored type registrations, such as those produced with qmlRegisterType(). Do not call this function while a QQmlEngine exists or behavior will be undefined. Any existing QQmlEngines must be deleted before calling this function. This function only affects the application global cache. Delete the QQmlEngine to clear all cached data relating to that engine. 
QQmlContext *qmlContext(const QObject *object) Returns the QQmlContext associated with object, if any. This is equivalent to QQmlEngin8b7c:f320:99b9:690f:4595:cd17:293a:c069contextForObject(object). Note: Add #include <QtQml> to use this function.
See also contextForObject() and qmlEngine(). 
QQmlInfo QtQml8b7c:f320:99b9:690f:4595:cd17:293a:c069qmlDebug(const QObject *object) Prints debug messages that include the file and line number for the specified QML object. When QML types produce logging messages, it improves traceability if they include the QML file and line number on which the particular instance was instantiated. To include the file and line number, an object must be passed. If the file and line number is not available for that instance (either it was not instantiated by the QML engine or location information is disabled), "unknown location" will be used instead. For example, qmlDebug(object) << "Internal state: 42"; prints QML MyCustomType (unknown location): Internal state: 42 This function was introduced in Qt 5.9. See also QtQml8b7c:f320:99b9:690f:4595:cd17:293a:c069qmlInfo and QtQml8b7c:f320:99b9:690f:4595:cd17:293a:c069qmlWarning. 
QQmlEngine *qmlEngine(const QObject *object) Returns the QQmlEngine associated with object, if any. This is equivalent to QQmlEngin8b7c:f320:99b9:690f:4595:cd17:293a:c069contextForObject(object)->engine(), but more efficient. Note: Add #include <QtQml> to use this function.
See also contextForObject() and qmlContext(). 
QQmlInfo QtQml8b7c:f320:99b9:690f:4595:cd17:293a:c069qmlInfo(const QObject *object) Prints informational messages that include the file and line number for the specified QML object. When QML types produce logging messages, it improves traceability if they include the QML file and line number on which the particular instance was instantiated. To include the file and line number, an object must be passed. If the file and line number is not available for that instance (either it was not instantiated by the QML engine or location information is disabled), "unknown location" will be used instead. For example, qmlInfo(object) << tr("component property is a write-once property"); prints QML MyCustomType (unknown location): component property is a write-once property Note: In versions prior to Qt 5.9, qmlInfo reported messages using a warning QtMsgType. For Qt 5.9 and above, qmlInfo uses an info QtMsgType. To send warnings, use qmlWarning.
See also QtQml8b7c:f320:99b9:690f:4595:cd17:293a:c069qmlDebug and QtQml8b7c:f320:99b9:690f:4595:cd17:293a:c069qmlWarning. 
bool qmlProtectModule(const char *uri, int majVersion) This function protects a module from having types registered into it. This can be used to prevent other plugins from injecting types into your module. It can also be a performance improvement, as it allows the engine to skip checking for the possibility of new types or plugins when this import is reached. The performance benefit is primarily seen when registering application specific types from within the application instead of through a plugin. Using qmlProtectModule allows the engine to skip checking for a plugin when that uri is imported, which can be noticeable with slow file systems. After this function is called, any attempt to register C++ types into this uri, major version combination will lead to a runtime error. Call this after you have registered all of your types with the engine. Returns true if the module with uri as a module identifier and majVersion as a major version number was found and locked, otherwise returns false. The module must contain exported types in order to be found. 
int qmlRegisterExtendedType(const char *uri, int versionMajor, int versionMinor, const char *qmlName) This template function registers the C++ type and its extension object in the QML system with the name qmlName in the library imported from uri having version number composed from versionMajor and versionMinor. Properties not available in the main type will be searched for in the extension object. Returns the QML type id. See also qmlRegisterType() and Registering Extension Objects. 
int qmlRegisterExtendedUncreatableType(const char *uri, int versionMajor, int versionMinor, const char *qmlName, const QString &reason) This template function registers the C++ type and its extension in the QML system with the name qmlName in the library imported from uri having version number composed from versionMajor and versionMinor. While the type has a name and a type, it cannot be created. An error message with the given reason is printed if the user attempts to create an instance of this type. This is useful where the type is only intended for providing attached properties, enum values or an abstract base class with its extension. Returns the QML type id. See also qmlRegisterUncreatableType(). 
int qmlRegisterInterface(const char *typeName) This template function registers the C++ type in the QML system under the name typeName. Returns the QML type id. 
void qmlRegisterModule(const char *uri, int versionMajor, int versionMinor) This function registers a module in a particular uri with a version specified in versionMajor and versionMinor. This can be used to make a certain module version available, even if no types are registered for that version. This is particularly useful for keeping the versions of related modules in sync. This function was introduced in Qt 5.9. 
int qmlRegisterRevision(const char *uri, int versionMajor, int versionMinor) This template function registers the specified revision of a C++ type in the QML system with the library imported from uri having the version number composed from versionMajor and versionMinor. Returns the QML type id. template<typename T, int metaObjectRevision>
int qmlRegisterRevision(const char *uri, int versionMajor, int versionMinor); This function is typically used to register the revision of a base class to use for the specified version of the type (see Type Revisions and Versions). 
int qmlRegisterSingletonType(const char *uri, int versionMajor, int versionMinor, const char *typeName, QJSValue(* ) ( QQmlEngine *, QJSEngine * ) callback) This function may be used to register a singleton type provider callback in a particular uri and typeName with a version specified in versionMajor and versionMinor. Installing a singleton type allows developers to provide arbitrary functionality (methods and properties) to a client without requiring individual instances of the type to be instantiated by the client. A singleton type may be either a QObject or a QJSValue. This function should be used to register a singleton type provider function which returns a QJSValue as a singleton type. NOTE: QJSValue singleton type properties will not trigger binding re-evaluation if changed. Usage: // First, define the singleton type provider function (callback).
static QJSValue example_qjsvalue_singletontype_provider(QQmlEngine *engine, QJSEngine *scriptEngine)
{
    Q_UNUSED(engine)

    static int seedValue = 5;
    QJSValue example = scriptEngine->newObject();
    example.setProperty("someProperty", seedValue++);
    return example;
}

// Second, register the singleton type provider with QML by calling this function in an initialization function.
qmlRegisterSingletonType("Qt.example.qjsvalueApi", 1, 0, "MyApi", example_qjsvalue_singletontype_provider); Alternatively, you can use a C++11 lambda: qmlRegisterSingletonType("Qt.example.qjsvalueApi", 1, 0, "MyApi", [](QQmlEngine *engine, QJSEngine *scriptEngine) -> QJSValue {
    Q_UNUSED(engine)

    static int seedValue = 5;
    QJSValue example = scriptEngine->newObject();
    example.setProperty("someProperty", seedValue++);
    return example;
}); In order to use the registered singleton type in QML, you must import the singleton type. import QtQuick 2.0
import Qt.example.qjsvalueApi 1.0 as ExampleApi
Item {
    id: root
    property int someValue: ExampleApi.MyApi.someProperty
} 
int qmlRegisterSingletonType(const char *uri, int versionMajor, int versionMinor, const char *typeName, QObject *(* ) ( QQmlEngine *, QJSEngine * ) callback) This function may be used to register a singleton type provider callback in a particular uri and typeName with a version specified in versionMajor and versionMinor. Installing a singleton type into a uri allows developers to provide arbitrary functionality (methods and properties) to clients without requiring individual instances ot the type to be instantiated by the client. A singleton type may be either a QObject or a QJSValue. This function should be used to register a singleton type provider function which returns a QObject of the given type T as a singleton type. A QObject singleton type may be referenced via the type name with which it was registered, and this typename may be used as the target in a Connections type or otherwise used as any other type id would. One exception to this is that a QObject singleton type property may not be aliased (because the singleton type name does not identify an object within the same component as any other item). NOTE: A QObject singleton type instance returned from a singleton type provider is owned by the QML engine unless the object has explicit QQmlEngin8b7c:f320:99b9:690f:4595:cd17:293a:c069CppOwnership flag set. Usage: // First, define your QObject which provides the functionality.
class SingletonTypeExample : public QObject
{
    Q_OBJECT
    Q_PROPERTY (int someProperty READ someProperty WRITE setSomeProperty NOTIFY somePropertyChanged)

public:
    SingletonTypeExample(QObject* parent = 0)
        : QObject(parent), m_someProperty(0)
    {
    }

    ~SingletonTypeExample() {}

    Q_INVOKABLE int doSomething() { setSomeProperty(5); return m_someProperty; }

    int someProperty() const { return m_someProperty; }
    void setSomeProperty(int val) { m_someProperty = val; emit somePropertyChanged(val); }

signals:
    void somePropertyChanged(int newValue);

private:
    int m_someProperty;
};

// Second, define the singleton type provider function (callback).
static QObject *example_qobject_singletontype_provider(QQmlEngine *engine, QJSEngine *scriptEngine)
{
    Q_UNUSED(engine)
    Q_UNUSED(scriptEngine)

    SingletonTypeExample *example = new SingletonTypeExample();
    return example;
}

// Third, register the singleton type provider with QML by calling this function in an initialization function.
qmlRegisterSingletonType<SingletonTypeExample>("Qt.example.qobjectSingleton", 1, 0, "MyApi", example_qobject_singletontype_provider); Alternatively, you can use a C++11 lambda: qmlRegisterSingletonType<SingletonTypeExample>("Qt.example.qjsvalueApi", 1, 0, "MyApi", [](QQmlEngine *engine, QJSEngine *scriptEngine) -> QObject * {
    Q_UNUSED(engine)
    Q_UNUSED(scriptEngine)

    SingletonTypeExample *example = new SingletonTypeExample();
    return example;
}); In order to use the registered singleton type in QML, you must import the singleton type. import QtQuick 2.0
import Qt.example.qobjectSingleton 1.0
Item {
    id: root
    property int someValue: MyApi.someProperty

    Component.onCompleted: {
        someValue = MyApi.doSomething()
    }
} Since singleton types do not have an associated QQmlContext object, then within the functions of a QObject-derived type that is registered as a singleton type implementation the QML context and engine information is not available. The QQmlEngin8b7c:f320:99b9:690f:4595:cd17:293a:c069contextForObject() function returns NULL when supplied with a pointer to an QObject that implements a singleton type. Extending the above example: class SingletonTypeExample : public QObject
{
    ...

    Q_INVOKABLE void doSomethingElse()
    {
        // QML Engine/Context information is not accessible here:
        Q_ASSERT(QQmlEngin8b7c:f320:99b9:690f:4595:cd17:293a:c069contextForObject(this) == 0);
        Q_ASSERT(qmlContext(this) == 0);
        Q_ASSERT(qmlEngine(this) == 0);
    }

    ...
} 
int qmlRegisterSingletonType(const QUrl &url, const char *uri, int versionMajor, int versionMinor, const char *qmlName) This function may be used to register a singleton type with the name qmlName, in the library imported from uri having the version number composed from versionMajor and versionMinor. The type is defined by the QML file krodriguez@example.net. The url must be an absolute URL, i.e. url.isRelative() == false. In addition the type's QML file must have pragma Singleton statement among its import statements. A singleton type may be referenced via the type name with which it was registered, and this typename may be used as the target in a Connections type or otherwise used as any other type id would. One exception to this is that a singleton type property may not be aliased (because the singleton type name does not identify an object within the same component as any other item). Usage: // First, define your QML singleton type which provides the functionality.
pragma Singleton
import QtQuick 2.0
Item {
    property int testProp1: 125
} // Second, register the QML singleton type by calling this function in an initialization function.
qmlRegisterSingletonType(QUrl("file:///absolute/path/SingletonType.qml"), "Qt.example.qobjectSingleton", 1, 0, "RegisteredSingleton"); In order to use the registered singleton type in QML, you must import the singleton type. import QtQuick 2.0
import Qt.example.qobjectSingleton 1.0
Item {
    id: root
    property int someValue: RegisteredSingleton.testProp1
} It is also possible to have QML singleton types registered without using the qmlRegisterSingletonType function. That can be done by adding a pragma Singleton statement among the imports of the type's QML file. In addition the type must be defined in a qmldir file with a singleton keyword and the qmldir must be imported by the QML files using the singleton. 
int qmlRegisterType() This is an overloaded function. This template function registers the C++ type in the QML system. Instances of this type cannot be created from the QML system. Returns the QML type id. 
int qmlRegisterType(const char *uri, int versionMajor, int versionMinor, const char *qmlName) This template function registers the C++ type in the QML system with the name qmlName, in the library imported from uri having the version number composed from versionMajor and versionMinor. Returns the QML type id. There are two forms of this template function: template<typename T>
int qmlRegisterType(const char *uri, int versionMajor, int versionMinor, const char *qmlName);

template<typename T, int metaObjectRevision>
int qmlRegisterType(const char *uri, int versionMajor, int versionMinor, const char *qmlName); The former is the standard form which registers the type T as a new type. The latter allows a particular revision of a class to be registered in a specified version (see Type Revisions and Versions). For example, this registers a C++ class MySliderItem as a QML type named Slider for version 1.0 of a type namespace called "com.mycompany.qmlcomponents": qmlRegisterType<MySliderItem>("com.mycompany.qmlcomponents", 1, 0, "Slider"); Once this is registered, the type can be used in QML by importing the specified type namespace and version number: import com.mycompany.qmlcomponents 1.0

Slider {
    // ...
} Note that it's perfectly reasonable for a library to register types to older versions than the actual version of the library. Indeed, it is normal for the new library to allow QML written to previous versions to continue to work, even if more advanced versions of some of its types are available. 
int qmlRegisterType(const QUrl &url, const char *uri, int versionMajor, int versionMinor, const char *qmlName) This function registers a type in the QML system with the name qmlName, in the library imported from uri having the version number composed from versionMajor and versionMinor. The type is defined by the QML file krodriguez@example.net. The url must be an absolute URL, i.e. url.isRelative() == false. Normally QML files can be loaded as types directly from other QML files, or using a qmldir file. This function allows registration of files to types from C++ code, such as when the type mapping needs to be procedurally krodriguez@example.net. Returns -1 if the registration was not successful. 
int qmlRegisterTypeNotAvailable(const char *uri, int versionMajor, int versionMinor, const char *qmlName, const QString &message) This function registers a type in the QML system with the name qmlName, in the type namespace imported from uri having the version number composed from versionMajor and versionMinor, but any attempt to instantiate the type will produce the given error message. Normally, the types exported by a plugin should be fixed. However, if a C++ type is not available, you should at least "reserve" the QML type name, and give the user of the unavailable type a meaningful error message. Returns the QML type id. Example: #ifdef NO_GAMES_ALLOWED
qmlRegisterTypeNotAvailable("MinehuntCore", 0, 1, "Game", "Get back to work, slacker!");
#else
qmlRegisterType<MinehuntGame>("MinehuntCore", 0, 1, "Game");
#endif This will cause any QML which imports the "MinehuntCore" type namespace and attempts to use the type to produce an error message: fun.qml: Get back to work, slacker!
   Game {
   ^ Without this, a generic "Game is not a type" message would be given. See also qmlRegisterUncreatableType(). 
int qmlRegisterUncreatableMetaObject(const QMetaObject &staticMetaObject, const char *uri, int versionMajor, int versionMinor, const char *qmlName, const QString &reason) This function registers the staticMetaObject and its extension in the QML system with the name qmlName in the library imported from uri having version number composed from versionMajor and versionMinor. An instance of the meta object cannot be created. An error message with the given reason is printed if the user attempts to create it. This function is useful for registering Q_NAMESPACE namespaces. Returns the QML type id. For example: namespace MyNamespace {
  Q_NAMESPACE
  enum MyEnum {
      Key1,
      Key2,
  };
  Q_ENUMS(MyEnum)
}

//...
qmlRegisterUncreatableMetaObject(MyNamesp8b7c:f320:99b9:690f:4595:cd17:293a:c069staticMetaObject, "io.qt", 1, 0, "MyNamespace", "Access to enums & flags only"); On the QML side, you can now use the registered enums: Component.onCompleted: console.log(MyNamespace.Key2) This function was introduced in Qt 5.8. 
int qmlRegisterUncreatableType(const char *uri, int versionMajor, int versionMinor, const char *qmlName, const QString &message) This template function registers the C++ type in the QML system with the name qmlName, in the library imported from uri having the version number composed from versionMajor and versionMinor. While the type has a name and a type, it cannot be created, and the given error message will result if creation is attempted. This is useful where the type is only intended for providing attached properties or enum values. Returns the QML type id. See also qmlRegisterTypeNotAvailable(). 
QQmlInfo QtQml8b7c:f320:99b9:690f:4595:cd17:293a:c069qmlWarning(const QObject *object) Prints warning messages that include the file and line number for the specified QML object. When QML types produce logging messages, it improves traceability if they include the QML file and line number on which the particular instance was instantiated. To include the file and line number, an object must be passed. If the file and line number is not available for that instance (either it was not instantiated by the QML engine or location information is disabled), "unknown location" will be used instead. For example, qmlInfo(object) << tr("property cannot be set to 0"); prints QML MyCustomType (unknown location): property cannot be set to 0 This function was introduced in Qt 5.9. See also QtQml8b7c:f320:99b9:690f:4595:cd17:293a:c069qmlDebug and QtQml8b7c:f320:99b9:690f:4595:cd17:293a:c069qmlInfo.   Macro Documentation 
QML_DECLARE_TYPE() Equivalent to Q_DECLARE_METATYPE(TYPE *) and Q_DECLARE_METATYPE(QQmlListProperty<TYPE>) 
QML_DECLARE_TYPEINFO(Type, Flags) Declares additional properties of the given Type as described by the specified Flags. Current the only supported type info is QML_HAS_ATTACHED_PROPERTIES which declares that the Type supports attached properties. 

    
{'path': 'public/docs/qt~5.9/qqmlengine.html', 'source': 'DevDocs.IO'}