diff options
| author | Tim Blechmann <tim.blechmann@qt.io> | 2026-09-11 11:31:19 +0800 |
|---|---|---|
| committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2026-09-12 01:33:03 +0000 |
| commit | 951d907c79921a3652f81318d6764c983d11c587 (patch) | |
| tree | 555ae1e25cbaae8c7482616d32eb849b38878762 | |
| parent | f5ae5e7f90a5aced5939f6f63a564f4e07a7cd88 (diff) | |
imageprovider/imageresponseprovider: move plugin class to header
Both examples self-mock a Q_PLUGIN_METADATA(IID ...) plugin class
declared directly in the .cpp, which fails moc with
"Parse error at IID" on macOS CI (same bug class fixed for Windows in
c72296cfbec1). Move the plugin class into a header so moc processes
it normally instead of via self-included .moc, and add the missing
qmake HEADERS entries since both examples are also built via .pro.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Change-Id: I7762bf3be2401662f3a310ebe11469b83e14260f
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
(cherry picked from commit af50a67089b5d41a8479a3df3a9428c39c23a35b)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
8 files changed, 48 insertions, 26 deletions
diff --git a/examples/quick/imageprovider/CMakeLists.txt b/examples/quick/imageprovider/CMakeLists.txt index 7e31bcbabb..f250b7ab8e 100644 --- a/examples/quick/imageprovider/CMakeLists.txt +++ b/examples/quick/imageprovider/CMakeLists.txt @@ -20,6 +20,7 @@ qt6_add_qml_module(qmlimageproviderplugin CLASS_NAME ImageProviderExtensionPlugin SOURCES imageprovider.cpp + imageprovider.h ) target_link_libraries(qmlimageproviderplugin PUBLIC diff --git a/examples/quick/imageprovider/imageprovider.cpp b/examples/quick/imageprovider/imageprovider.cpp index c7ec8536d3..b1bb9a7bfd 100644 --- a/examples/quick/imageprovider/imageprovider.cpp +++ b/examples/quick/imageprovider/imageprovider.cpp @@ -2,7 +2,7 @@ // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause -#include <qqmlextensionplugin.h> +#include "imageprovider.h" #include <qqmlengine.h> #include <qquickimageprovider.h> @@ -43,17 +43,8 @@ public: }; -class ImageProviderExtensionPlugin : public QQmlEngineExtensionPlugin +void ImageProviderExtensionPlugin::initializeEngine(QQmlEngine *engine, const char *uri) { - Q_OBJECT - Q_PLUGIN_METADATA(IID QQmlEngineExtensionInterface_iid) -public: - void initializeEngine(QQmlEngine *engine, const char *uri) override - { - Q_UNUSED(uri); - engine->addImageProvider("colors", new ColorImageProvider); - } -}; - - -#include "imageprovider.moc" + Q_UNUSED(uri); + engine->addImageProvider("colors", new ColorImageProvider); +} diff --git a/examples/quick/imageprovider/imageprovider.h b/examples/quick/imageprovider/imageprovider.h new file mode 100644 index 0000000000..119cd0bbec --- /dev/null +++ b/examples/quick/imageprovider/imageprovider.h @@ -0,0 +1,17 @@ +// Copyright (C) 2026 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause + +#ifndef IMAGEPROVIDER_H +#define IMAGEPROVIDER_H + +#include <qqmlextensionplugin.h> + +class ImageProviderExtensionPlugin : public QQmlEngineExtensionPlugin +{ + Q_OBJECT + Q_PLUGIN_METADATA(IID QQmlEngineExtensionInterface_iid) +public: + void initializeEngine(QQmlEngine *engine, const char *uri) override; +}; + +#endif // IMAGEPROVIDER_H diff --git a/examples/quick/imageprovider/imageprovider.pro b/examples/quick/imageprovider/imageprovider.pro index 16364a9383..3ecbd9a3e8 100644 --- a/examples/quick/imageprovider/imageprovider.pro +++ b/examples/quick/imageprovider/imageprovider.pro @@ -7,6 +7,7 @@ QML_IMPORT_MAJOR_VERSION = 1 DESTDIR = ImageProviderCore TARGET = qmlimageproviderplugin +HEADERS += imageprovider.h SOURCES += imageprovider.cpp EXAMPLE_FILES = imageprovider-example.qml diff --git a/examples/quick/imageresponseprovider/CMakeLists.txt b/examples/quick/imageresponseprovider/CMakeLists.txt index f0b827f14a..386c9921ce 100644 --- a/examples/quick/imageresponseprovider/CMakeLists.txt +++ b/examples/quick/imageresponseprovider/CMakeLists.txt @@ -22,6 +22,7 @@ qt6_add_qml_module(qmlimageresponseproviderplugin target_sources(qmlimageresponseproviderplugin PRIVATE imageresponseprovider.cpp + imageresponseprovider.h ) set_target_properties(qmlimageresponseproviderplugin PROPERTIES diff --git a/examples/quick/imageresponseprovider/imageresponseprovider.cpp b/examples/quick/imageresponseprovider/imageresponseprovider.cpp index 05b74d73a0..8ddb31b70e 100644 --- a/examples/quick/imageresponseprovider/imageresponseprovider.cpp +++ b/examples/quick/imageresponseprovider/imageresponseprovider.cpp @@ -2,7 +2,7 @@ // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause -#include <qqmlextensionplugin.h> +#include "imageresponseprovider.h" #include <qqmlengine.h> #include <qquickimageprovider.h> @@ -81,17 +81,10 @@ private: }; -class ImageProviderExtensionPlugin : public QQmlEngineExtensionPlugin +void ImageProviderExtensionPlugin::initializeEngine(QQmlEngine *engine, const char *uri) { - Q_OBJECT - Q_PLUGIN_METADATA(IID QQmlEngineExtensionInterface_iid) -public: - void initializeEngine(QQmlEngine *engine, const char *uri) override - { - Q_UNUSED(uri); - engine->addImageProvider("async", new AsyncImageProvider); - } - -}; + Q_UNUSED(uri); + engine->addImageProvider("async", new AsyncImageProvider); +} #include "imageresponseprovider.moc" diff --git a/examples/quick/imageresponseprovider/imageresponseprovider.h b/examples/quick/imageresponseprovider/imageresponseprovider.h new file mode 100644 index 0000000000..cf8805557b --- /dev/null +++ b/examples/quick/imageresponseprovider/imageresponseprovider.h @@ -0,0 +1,17 @@ +// Copyright (C) 2026 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause + +#ifndef IMAGERESPONSEPROVIDER_H +#define IMAGERESPONSEPROVIDER_H + +#include <qqmlextensionplugin.h> + +class ImageProviderExtensionPlugin : public QQmlEngineExtensionPlugin +{ + Q_OBJECT + Q_PLUGIN_METADATA(IID QQmlEngineExtensionInterface_iid) +public: + void initializeEngine(QQmlEngine *engine, const char *uri) override; +}; + +#endif // IMAGERESPONSEPROVIDER_H diff --git a/examples/quick/imageresponseprovider/imageresponseprovider.pro b/examples/quick/imageresponseprovider/imageresponseprovider.pro index 8be4dbb658..7e61469b87 100644 --- a/examples/quick/imageresponseprovider/imageresponseprovider.pro +++ b/examples/quick/imageresponseprovider/imageresponseprovider.pro @@ -5,6 +5,7 @@ QT += qml quick DESTDIR = ImageResponseProviderCore TARGET = qmlimageresponseproviderplugin +HEADERS += imageresponseprovider.h SOURCES += imageresponseprovider.cpp EXAMPLE_FILES = imageresponseprovider-example.qml |
