diff options
author | Mate Barany <mate.barany@qt.io> | 2023-06-05 18:45:09 +0200 |
---|---|---|
committer | Mate Barany <mate.barany@qt.io> | 2023-06-12 14:09:53 +0000 |
commit | c883c95561b2206c25eeefe89cac96da1b4de307 (patch) | |
tree | 2ed67f888c84fef8d2981fbe96139483e30ba186 | |
parent | 65e59dde2bed706b49a49945bfd89aa28ba8c8e9 (diff) |
QuickSubscription example: Port CMakeLists.txt to use qt_add_qml_module
Port the CmakeLists.txt and change the source files accordingly:
- rename main.qml to Main.qml
- remove MqttClient import from Main.qml
- add QML macros to qmlmqttclient.h
- revamp main.cpp
Also update the qmake build:
- revamp quicksubscription.pro
- add qmldir to project
- remove qml.qrc
Task-number: QTBUG-110893
Change-Id: Ie7c0dd260e94c1e1ad4756fb21a70f24f2c60f87
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Oliver Eftevaag <oliver.eftevaag@qt.io>
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
(cherry picked from commit 03cc0dd51271862653fa1c8c85a093a77b5659e3)
-rw-r--r-- | examples/mqtt/quicksubscription/CMakeLists.txt | 30 | ||||
-rw-r--r-- | examples/mqtt/quicksubscription/Main.qml (renamed from examples/mqtt/quicksubscription/main.qml) | 1 | ||||
-rw-r--r-- | examples/mqtt/quicksubscription/main.cpp | 19 | ||||
-rw-r--r-- | examples/mqtt/quicksubscription/qml.qrc | 5 | ||||
-rw-r--r-- | examples/mqtt/quicksubscription/qmldir | 4 | ||||
-rw-r--r-- | examples/mqtt/quicksubscription/qmlmqttclient.h | 4 | ||||
-rw-r--r-- | examples/mqtt/quicksubscription/quicksubscription.pro | 12 |
7 files changed, 36 insertions, 39 deletions
diff --git a/examples/mqtt/quicksubscription/CMakeLists.txt b/examples/mqtt/quicksubscription/CMakeLists.txt index 3c7c892..cbc8e77 100644 --- a/examples/mqtt/quicksubscription/CMakeLists.txt +++ b/examples/mqtt/quicksubscription/CMakeLists.txt @@ -4,8 +4,6 @@ cmake_minimum_required(VERSION 3.16) project(quicksubscription LANGUAGES CXX) -set(CMAKE_AUTOMOC ON) - if(NOT DEFINED INSTALL_EXAMPLESDIR) set(INSTALL_EXAMPLESDIR "examples") endif() @@ -14,21 +12,19 @@ set(INSTALL_EXAMPLEDIR "${INSTALL_EXAMPLESDIR}/mqtt/quicksubscription") find_package(Qt6 REQUIRED COMPONENTS Core Gui Mqtt Qml Quick) +qt_standard_project_setup(REQUIRES 6.5) + qt_add_executable(quicksubscription + WIN32 + MACOSX_BUNDLE main.cpp - qmlmqttclient.cpp qmlmqttclient.h -) - -set_target_properties(quicksubscription PROPERTIES - WIN32_EXECUTABLE TRUE - MACOSX_BUNDLE TRUE ) target_compile_definitions(quicksubscription PUBLIC QT_DEPRECATED_WARNINGS ) -target_link_libraries(quicksubscription PUBLIC +target_link_libraries(quicksubscription PRIVATE Qt::Core Qt::Gui Qt::Mqtt @@ -36,16 +32,12 @@ target_link_libraries(quicksubscription PUBLIC Qt::Quick ) -# Resources: -set(qml_resource_files - "main.qml" -) - -qt6_add_resources(quicksubscription "qml" - PREFIX - "/" - FILES - ${qml_resource_files} +qt_add_qml_module(quicksubscription + URI subscription + QML_FILES + "Main.qml" + SOURCES + qmlmqttclient.cpp qmlmqttclient.h ) install(TARGETS quicksubscription diff --git a/examples/mqtt/quicksubscription/main.qml b/examples/mqtt/quicksubscription/Main.qml index 7f3c48b..05f8920 100644 --- a/examples/mqtt/quicksubscription/main.qml +++ b/examples/mqtt/quicksubscription/Main.qml @@ -5,7 +5,6 @@ import QtQuick 2.8 import QtQuick.Window 2.2 import QtQuick.Controls 2.1 import QtQuick.Layouts 1.1 -import MqttClient 1.0 Window { visible: true diff --git a/examples/mqtt/quicksubscription/main.cpp b/examples/mqtt/quicksubscription/main.cpp index 785140b..b2a59d2 100644 --- a/examples/mqtt/quicksubscription/main.cpp +++ b/examples/mqtt/quicksubscription/main.cpp @@ -1,24 +1,21 @@ // Copyright (C) 2017 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause -#include "qmlmqttclient.h" +#include <QtQml/qqmlapplicationengine.h> +#include <QtGui/qguiapplication.h> -#include <QGuiApplication> -#include <QQmlApplicationEngine> -#include <QLoggingCategory> +using namespace Qt::StringLiterals; int main(int argc, char *argv[]) { QGuiApplication app(argc, argv); - QQmlApplicationEngine engine; - qmlRegisterType<QmlMqttClient>("MqttClient", 1, 0, "MqttClient"); - qmlRegisterUncreatableType<QmlMqttSubscription>("MqttClient", 1, 0, "MqttSubscription", QLatin1String("Subscriptions are read-only")); + QObject::connect( + &engine, &QQmlApplicationEngine::objectCreationFailed, &app, + []() { QCoreApplication::exit(EXIT_FAILURE); }, Qt::QueuedConnection); - engine.load(QUrl(QStringLiteral("qrc:/main.qml"))); - if (engine.rootObjects().isEmpty()) - return -1; + engine.loadFromModule(u"subscription"_s, u"Main"_s); - return app.exec(); + return QGuiApplication::exec(); } diff --git a/examples/mqtt/quicksubscription/qml.qrc b/examples/mqtt/quicksubscription/qml.qrc deleted file mode 100644 index 5f6483a..0000000 --- a/examples/mqtt/quicksubscription/qml.qrc +++ /dev/null @@ -1,5 +0,0 @@ -<RCC> - <qresource prefix="/"> - <file>main.qml</file> - </qresource> -</RCC> diff --git a/examples/mqtt/quicksubscription/qmldir b/examples/mqtt/quicksubscription/qmldir new file mode 100644 index 0000000..fa16d60 --- /dev/null +++ b/examples/mqtt/quicksubscription/qmldir @@ -0,0 +1,4 @@ +module subscription + +prefer :/qt/qml/subscription/ +Main 1.0 Main.qml diff --git a/examples/mqtt/quicksubscription/qmlmqttclient.h b/examples/mqtt/quicksubscription/qmlmqttclient.h index e229288..05a86c4 100644 --- a/examples/mqtt/quicksubscription/qmlmqttclient.h +++ b/examples/mqtt/quicksubscription/qmlmqttclient.h @@ -8,12 +8,15 @@ #include <QtMqtt/QMqttClient> #include <QtMqtt/QMqttSubscription> +#include <QtQml/qqml.h> + class QmlMqttClient; class QmlMqttSubscription : public QObject { Q_OBJECT Q_PROPERTY(QMqttTopicFilter topic MEMBER m_topic NOTIFY topicChanged) + QML_UNCREATABLE("Not intended to be creatable") public: QmlMqttSubscription(QMqttSubscription *s, QmlMqttClient *c); ~QmlMqttSubscription(); @@ -38,6 +41,7 @@ class QmlMqttClient : public QObject Q_PROPERTY(QString hostname READ hostname WRITE setHostname NOTIFY hostnameChanged) Q_PROPERTY(int port READ port WRITE setPort NOTIFY portChanged) Q_PROPERTY(QMqttClient::ClientState state READ state WRITE setState NOTIFY stateChanged) + QML_NAMED_ELEMENT(MqttClient) public: QmlMqttClient(QObject *parent = nullptr); diff --git a/examples/mqtt/quicksubscription/quicksubscription.pro b/examples/mqtt/quicksubscription/quicksubscription.pro index 474fb39..0b32bfd 100644 --- a/examples/mqtt/quicksubscription/quicksubscription.pro +++ b/examples/mqtt/quicksubscription/quicksubscription.pro @@ -1,7 +1,8 @@ TEMPLATE = app +TARGET = quicksubscription QT += qml quick mqtt -CONFIG += c++11 +CONFIG += qmltypes SOURCES += main.cpp \ qmlmqttclient.cpp @@ -9,10 +10,15 @@ SOURCES += main.cpp \ HEADERS += \ qmlmqttclient.h -RESOURCES += qml.qrc +qml_resources.files = Main.qml qmldir +qml_resources.prefix = /qt/qml/subscription + +RESOURCES += qml_resources # Additional import path used to resolve QML modules in Qt Creator's code model -QML_IMPORT_PATH = +QML_IMPORT_PATH = $$pwd/. +QML_IMPORT_NAME = subscription +QML_IMPORT_MAJOR_VERSION = 1 # Additional import path used to resolve QML modules just for Qt Quick Designer QML_DESIGNER_IMPORT_PATH = |