summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMate Barany <mate.barany@qt.io>2023-06-05 18:45:09 +0200
committerMate Barany <mate.barany@qt.io>2023-06-12 14:09:53 +0000
commitc883c95561b2206c25eeefe89cac96da1b4de307 (patch)
tree2ed67f888c84fef8d2981fbe96139483e30ba186
parent65e59dde2bed706b49a49945bfd89aa28ba8c8e9 (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.txt30
-rw-r--r--examples/mqtt/quicksubscription/Main.qml (renamed from examples/mqtt/quicksubscription/main.qml)1
-rw-r--r--examples/mqtt/quicksubscription/main.cpp19
-rw-r--r--examples/mqtt/quicksubscription/qml.qrc5
-rw-r--r--examples/mqtt/quicksubscription/qmldir4
-rw-r--r--examples/mqtt/quicksubscription/qmlmqttclient.h4
-rw-r--r--examples/mqtt/quicksubscription/quicksubscription.pro12
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 =