7#include <QtQml/qqmlprivate.h>
8#include <QtQml/qjsvalue.h>
9#include <QtQml/qqmlregistration.h>
11#include <QtCore/qbytearray.h>
12#include <QtCore/qmetaobject.h>
13#include <QtCore/qmetacontainer.h>
14#include <QtCore/qversionnumber.h>
16#define QML_VERSION 0x020000
17#define QML_VERSION_STR "2.0"
19#define QML_DECLARE_TYPE(TYPE) \
20 Q_DECLARE_METATYPE(TYPE*) \
21 Q_DECLARE_METATYPE(QQmlListProperty<TYPE>)
23#define QML_DECLARE_TYPE_HASMETATYPE(TYPE) \
24 Q_DECLARE_METATYPE(QQmlListProperty<TYPE>)
26#define QML_DECLARE_INTERFACE(INTERFACE) \
27 QML_DECLARE_TYPE(INTERFACE)
29#define QML_DECLARE_INTERFACE_HASMETATYPE(INTERFACE) \
30 QML_DECLARE_TYPE_HASMETATYPE(INTERFACE)
36#define QML_DECLARE_TYPEINFO(TYPE, FLAGS) \
39class QQmlTypeInfo<TYPE > \
43 hasAttachedProperties = (((FLAGS) & QML_HAS_ATTACHED_PROPERTIES) == QML_HAS_ATTACHED_PROPERTIES) \
70 QQmlPrivate::attachedPropertiesFunc<T>(),
71 QQmlPrivate::attachedPropertiesMetaObject<T>(),
89template<
typename T,
int metaObjectRevisionMinor>
107 QQmlPrivate::attachedPropertiesFunc<T>(),
108 QQmlPrivate::attachedPropertiesMetaObject<T>(),
131 QQmlPrivate::qmlRegisterTypeAndRevisions<T, void>(
163 QQmlPrivate::attachedPropertiesFunc<T>(),
164 QQmlPrivate::attachedPropertiesMetaObject<T>(),
181template<
typename T,
int metaObjectRevision>
197 QQmlPrivate::attachedPropertiesFunc<T>(),
198 QQmlPrivate::attachedPropertiesMetaObject<T>(),
215template<
typename T,
typename E>
219 const QMetaObject * attachedMetaObject = QQmlPrivate::attachedPropertiesMetaObject<E>();
221 attached = QQmlPrivate::attachedPropertiesFunc<T>();
222 attachedMetaObject = QQmlPrivate::attachedPropertiesMetaObject<T>();
256template<
typename T,
typename E,
int metaObjectRevision>
260 const QMetaObject * attachedMetaObject = QQmlPrivate::attachedPropertiesMetaObject<E>();
262 attached = QQmlPrivate::attachedPropertiesFunc<T>();
263 attachedMetaObject = QQmlPrivate::attachedPropertiesMetaObject<T>();
300int qmlRegisterType(
const char *uri,
int versionMajor,
int versionMinor,
const char *qmlName)
302 static_assert(!std::is_abstract_v<T>,
303 "It is not possible to register an abstract type with qmlRegisterType. "
304 "Maybe you wanted qmlRegisterUncreatableType or qmlRegisterInterface?");
317 QQmlPrivate::attachedPropertiesFunc<T>(),
318 QQmlPrivate::attachedPropertiesMetaObject<T>(),
335template<
typename T,
int metaObjectRevision>
336int qmlRegisterType(
const char *uri,
int versionMajor,
int versionMinor,
const char *qmlName)
338 static_assert(!std::is_abstract_v<T>,
339 "It is not possible to register an abstract type with qmlRegisterType. "
340 "Maybe you wanted qmlRegisterUncreatableType or qmlRegisterInterface?");
353 QQmlPrivate::attachedPropertiesFunc<T>(),
354 QQmlPrivate::attachedPropertiesMetaObject<T>(),
371template<
typename T,
int metaObjectRevision>
385 QQmlPrivate::attachedPropertiesFunc<T>(),
386 QQmlPrivate::attachedPropertiesMetaObject<T>(),
403template<
typename T,
typename E>
406 static_assert(!std::is_abstract_v<T>,
407 "It is not possible to register an extension to an abstract type with qmlRegisterExtendedType.");
409 static_assert(!std::is_abstract_v<E>,
410 "It is not possible to register an abstract type with qmlRegisterExtendedType. "
411 "Maybe you wanted qmlRegisterExtendedUncreatableType?");
426 QQmlPrivate::attachedPropertiesFunc<T>(),
427 QQmlPrivate::attachedPropertiesMetaObject<T>(),
444template<
typename T,
typename E>
448 static_assert(!std::is_abstract_v<T>,
449 "It is not possible to register an extension to an abstract type with qmlRegisterExtendedType.");
451 static_assert(!std::is_abstract_v<E>,
452 "It is not possible to register an abstract type with qmlRegisterExtendedType. "
453 "Maybe you wanted qmlRegisterExtendedUncreatableType?");
456 const QMetaObject * attachedMetaObject = QQmlPrivate::attachedPropertiesMetaObject<E>();
458 attached = QQmlPrivate::attachedPropertiesFunc<T>();
459 attachedMetaObject = QQmlPrivate::attachedPropertiesMetaObject<T>();
498 QMetaType::fromType<T *>(),
499 QMetaType::fromType<QQmlListProperty<T> >(),
500 qobject_interface_iid<T *>(),
513 static_assert(!std::is_abstract_v<T>,
514 "It is not possible to register an abstract type with qmlRegisterCustomType. "
515 "Maybe you wanted qmlRegisterUncreatableType or qmlRegisterInterface?");
528 QQmlPrivate::attachedPropertiesFunc<T>(),
529 QQmlPrivate::attachedPropertiesMetaObject<T>(),
546template<
typename T,
int metaObjectRevision>
550 static_assert(!std::is_abstract_v<T>,
551 "It is not possible to register an abstract type with qmlRegisterCustomType. "
552 "Maybe you wanted qmlRegisterUncreatableType or qmlRegisterInterface?");
565 QQmlPrivate::attachedPropertiesFunc<T>(),
566 QQmlPrivate::attachedPropertiesMetaObject<T>(),
583template<
typename T,
typename E>
587 static_assert(!std::is_abstract_v<T>,
588 "It is not possible to register an extension to an abstract type with qmlRegisterCustomExtendedType.");
590 static_assert(!std::is_abstract_v<E>,
591 "It is not possible to register an abstract type with qmlRegisterCustomExtendedType.");
594 const QMetaObject * attachedMetaObject = QQmlPrivate::attachedPropertiesMetaObject<E>();
596 attached = QQmlPrivate::attachedPropertiesFunc<T>();
597 attachedMetaObject = QQmlPrivate::attachedPropertiesMetaObject<T>();
645Q_QML_EXPORT
void qmlRegisterModule(
const char *uri,
int versionMajor,
int versionMinor);
692 const char *uri,
int versionMajor,
int versionMinor,
const char *
typeName,
715template <
typename T,
typename F,
typename std::enable_if<std::is_convertible<F, std::function<QObject *(QQmlEngine *, QJSEngine *)>>::value
716 && !std::is_convertible<F, QObject *(*)(QQmlEngine *, QJSEngine *)>::value,
void>::type* =
nullptr>
742 const char *
typeName, T *cppObject) ->
typename std::enable_if<std::is_base_of<QObject, T>::value,
int>
::type
746 registrationFunctor.
m_object = cppObject;
747 return qmlRegisterSingletonType<T>(uri, versionMajor, versionMinor,
typeName, registrationFunctor);
754 qWarning(
"qmlRegisterSingletonType requires absolute URLs.");
773 qWarning(
"qmlRegisterType requires absolute URLs.");
788template<
typename Container>
791 static_assert(!std::is_abstract_v<Container>,
792 "It is not possible to register an abstract container with qmlRegisterAnonymousSequentialContainer.");
799 QMetaType::fromType<Container>(),
800 QMetaSequence::fromContainer<Container>(),
807template<
class T,
class Resolved,
class Extended,
bool Singleton,
bool Interface,
bool Sequence,
bool Uncreatable>
810template<
class T,
class Resolved,
class Extended>
815#if QT_DEPRECATED_SINCE(6, 4)
819 QMetaType::fromType<Resolved>());
822 if constexpr (!std::is_base_of_v<QObject, Resolved>
825 QMetaType::fromType<Resolved>());
829 "This type is neither a default constructible QObject, nor a default- "
830 "and copy-constructible Q_GADGET, nor marked as uncreatable.\n"
831 "You should not use it as a QML type.");
832 static_assert(std::is_base_of_v<QObject, Resolved>
835 QQmlPrivate::qmlRegisterTypeAndRevisions<Resolved, Extended>(
841template<
class T,
class Resolved,
class Extended>
846#if QT_DEPRECATED_SINCE(6, 4)
848 if constexpr (!std::is_base_of_v<QObject, Resolved>
851 QMetaType::fromType<Resolved>());
854 static_assert(std::is_base_of_v<QObject, Resolved>
857 QQmlPrivate::qmlRegisterTypeAndRevisions<Resolved, Extended>(
863template<
class T,
class Resolved>
869 QQmlPrivate::qmlRegisterSequenceAndRevisions<Resolved>(
875template<
class T,
class Resolved,
class Extended>
880#if QT_DEPRECATED_SINCE(6, 4)
882 if constexpr (QQmlPrivate::singletonConstructionMode<Resolved, T>()
885 QMetaType::fromType<Resolved>());
888 static_assert(QQmlPrivate::singletonConstructionMode<Resolved, T>()
890 "A singleton needs either a default constructor or, when adding a default "
891 "constructor is infeasible, a public static "
892 "create(QQmlEngine *, QJSEngine *) method");
895 QQmlPrivate::qmlRegisterSingletonAndRevisions<Resolved, Extended, T>(
901template<
class T,
class Resolved,
class Extended>
907 QQmlPrivate::qmlRegisterSingletonAndRevisions<Resolved, Extended, T>(
913template<
class T,
class Resolved>
918 const int id = qmlRegisterInterface<Resolved>(uri, versionMajor);
924template<
typename... T>
934 ::registerTypeAndRevisions(uri, versionMajor, qmlTypeIds,
939 const char *uri,
int versionMajor,
957 (classInfoMetaObject ? classInfoMetaObject :
metaObject),
969 &qmlCreateCustomParser<void>,
980 const char *uri,
int versionMajor,
985 classInfoMetaObject,
nullptr);
988int Q_QML_EXPORT
qmlTypeId(
const char *uri,
int versionMajor,
int versionMinor,
const char *qmlName);
The QJSEngine class provides an environment for evaluating JavaScript code.
The QJSValue class acts as a container for Qt/JavaScript data types.
void append(parameter_type t)
The QQmlContext class defines a context within a QML engine.
The QQmlCustomParser class allows you to add new arbitrary types to QML.
The QQmlEngine class provides an environment for instantiating QML components.
\macro QT_RESTRICTED_CAST_FROM_ASCII
static constexpr QTypeRevision fromVersion(Major majorVersion, Minor minorVersion)
Produces a QTypeRevision from the given majorVersion and minorVersion, both of which need to be a val...
static constexpr QTypeRevision zero()
Produces a QTypeRevision with major and minor version {0}.
static constexpr QTypeRevision fromMinorVersion(Minor minorVersion)
Produces a QTypeRevision from the given minorVersion with an invalid major version.
static constexpr QTypeRevision fromMajorVersion(Major majorVersion)
Produces a QTypeRevision from the given majorVersion with an invalid minor version.
bool isRelative() const
Returns true if the URL is relative; otherwise returns false.
Q_QML_EXPORT void qmlRegistrationWarning(QmlRegistrationWarning warning, QMetaType type)
@ CompositeSingletonRegistration
@ SequentialContainerRegistration
@ TypeAndRevisionsRegistration
@ UnconstructibleSingleton
int Q_QML_EXPORT qmlregister(RegistrationType, void *)
Combined button and popup list for selecting options.
DBusConnection const char DBusError DBusBusType DBusError return DBusConnection DBusHandleMessageFunction void DBusFreeFunction return DBusConnection return DBusConnection return const char DBusError return DBusConnection DBusMessage dbus_uint32_t return DBusConnection dbus_bool_t DBusConnection DBusAddWatchFunction DBusRemoveWatchFunction DBusWatchToggledFunction void DBusFreeFunction return DBusConnection DBusDispatchStatusFunction void DBusFreeFunction DBusTimeout return DBusTimeout return DBusWatch return DBusWatch unsigned int return DBusError const DBusError return const DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessageIter int const void return DBusMessageIter DBusMessageIter return DBusMessageIter void DBusMessageIter void int return DBusMessage DBusMessageIter return DBusMessageIter return DBusMessageIter DBusMessageIter const char const char const char const char return DBusMessage return DBusMessage const char return DBusMessage dbus_bool_t return DBusMessage dbus_uint32_t return DBusMessage void
GLuint GLsizei const GLchar * message
Q_QML_EXPORT QQmlEngine * qmlEngine(const QObject *)
Q_QML_EXPORT void qmlRegisterModuleImport(const char *uri, int moduleMajor, const char *import, int importMajor=QQmlModuleImportLatest, int importMinor=QQmlModuleImportLatest)
QQmlCustomParser * qmlCreateCustomParser()
Q_QML_EXPORT bool qmlProtectModule(const char *uri, int majVersion)
int qmlRegisterType(const char *uri, int versionMajor, int versionMinor, const char *qmlName)
int qmlRegisterUncreatableType(const char *uri, int versionMajor, int versionMinor, const char *qmlName, const QString &reason)
int qmlRegisterSingletonType(const char *uri, int versionMajor, int versionMinor, const char *typeName, QJSValue(*callback)(QQmlEngine *, QJSEngine *))
void qmlRegisterAnonymousTypesAndRevisions(const char *uri, int versionMajor)
int Q_QML_EXPORT qmlTypeId(const char *uri, int versionMajor, int versionMinor, const char *qmlName)
int qmlRegisterCustomExtendedType(const char *uri, int versionMajor, int versionMinor, const char *qmlName, QQmlCustomParser *parser)
int Q_QML_EXPORT qmlRegisterTypeNotAvailable(const char *uri, int versionMajor, int versionMinor, const char *qmlName, const QString &message)
void qmlRegisterNamespaceAndRevisions(const QMetaObject *metaObject, const char *uri, int versionMajor, QList< int > *qmlTypeIds, const QMetaObject *classInfoMetaObject, const QMetaObject *extensionMetaObject)
void qmlRegisterTypesAndRevisions(const char *uri, int versionMajor, QList< int > *qmlTypeIds)
@ QML_HAS_ATTACHED_PROPERTIES
int qmlRegisterExtendedUncreatableType(const char *uri, int versionMajor, int versionMinor, const char *qmlName, const QString &reason)
int qmlRegisterCustomType(const char *uri, int versionMajor, int versionMinor, const char *qmlName, QQmlCustomParser *parser)
int qmlRegisterExtendedType(const char *uri, int versionMajor)
int qmlRegisterAnonymousSequentialContainer(const char *uri, int versionMajor)
auto qmlRegisterSingletonInstance(const char *uri, int versionMajor, int versionMinor, const char *typeName, T *cppObject) -> typename std::enable_if< std::is_base_of< QObject, T >::value, int >::type
Q_QML_EXPORT QObject * qmlExtendedObject(QObject *)
QQmlModuleImportSpecialVersions
@ QQmlModuleImportModuleAny
int qmlRegisterRevision(const char *uri, int versionMajor, int versionMinor)
QT_BEGIN_NAMESPACE void Q_QML_EXPORT qmlClearTypeRegistrations()
Q_QML_EXPORT int qmlRegisterUncreatableMetaObject(const QMetaObject &staticMetaObject, const char *uri, int versionMajor, int versionMinor, const char *qmlName, const QString &reason)
Q_QML_EXPORT QQmlAttachedPropertiesFunc qmlAttachedPropertiesFunction(QObject *, const QMetaObject *)
Q_QML_EXPORT void qmlUnregisterModuleImport(const char *uri, int moduleMajor, const char *import, int importMajor=QQmlModuleImportLatest, int importMinor=QQmlModuleImportLatest)
int qmlRegisterAnonymousType(const char *uri, int versionMajor)
Q_QML_EXPORT void qmlRegisterModule(const char *uri, int versionMajor, int versionMinor)
Q_QML_EXPORT void qmlExecuteDeferred(QObject *)
Q_QML_EXPORT QObject * qmlAttachedPropertiesObject(QObject *, QQmlAttachedPropertiesFunc func, bool create=true)
Q_QML_EXPORT QQmlContext * qmlContext(const QObject *)
int qmlRegisterInterface(const char *uri, int versionMajor)
#define QML_UNCREATABLE(REASON)
#define QML_NAMED_ELEMENT(NAME)
#define QML_ADDED_IN_VERSION(MAJOR, MINOR)
QQmlPrivate::QQmlAttachedPropertiesFunc< QObject > QQmlAttachedPropertiesFunc
QUrl url("example.com")
[constructor-url-reference]
obj metaObject() -> className()
QPointer< QObject > m_object
static void registerTypeAndRevisions(const char *uri, int versionMajor, QList< int > *qmlTypeIds, const QMetaObject *extension)
static void registerTypeAndRevisions(const char *uri, int versionMajor, QList< int > *qmlTypeIds, const QMetaObject *extension)
static void registerTypeAndRevisions(const char *uri, int versionMajor, QList< int > *qmlTypeIds, const QMetaObject *extension)
static void registerTypeAndRevisions(const char *uri, int versionMajor, QList< int > *qmlTypeIds, const QMetaObject *extension)
static void registerTypeAndRevisions(const char *uri, int versionMajor, QList< int > *qmlTypeIds, const QMetaObject *)
static void registerTypeAndRevisions(const char *uri, int versionMajor, QList< int > *qmlTypeIds, const QMetaObject *)