Quick MQTT Example | Qt MQTT 6.4.1

- Qt 6.4
- Qt MQTT
- Qt MQTT Examples
- Quick MQTT Example
- Qt 6.4.1 Reference Documentation

# Quick MQTT Example

     // Copyright (C) 2017 The Qt Company Ltd.
     // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause

     #ifndef QMLMQTTCLIENT_H
     #define QMLMQTTCLIENT_H

     #include <QtCore/QMap>
     #include <QtMqtt/QMqttClient>
     #include <QtMqtt/QMqttSubscription>

     class QmlMqttClient;

     class QmlMqttSubscription : public QObject
     {
         Q_OBJECT
         Q_PROPERTY(QMqttTopicFilter topic MEMBER m_topic NOTIFY topicChanged)
     public:
         QmlMqttSubscription(QMqttSubscription *s, QmlMqttClient *c);
         ~QmlMqttSubscription();

     Q_SIGNALS:
         void topicChanged(QString);
         void messageReceived(const QString &msg);

     public slots:
         void handleMessage(const QMqttMessage &qmsg);

     private:
         Q_DISABLE_COPY(QmlMqttSubscription)
         QMqttSubscription *sub;
         QmlMqttClient *client;
         QMqttTopicFilter m_topic;
     };

     class QmlMqttClient : public QObject
     {
         Q_OBJECT
         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)
     public:

         QmlMqttClient(QObject *parent = nullptr);

         Q_INVOKABLE void connectToHost();
         Q_INVOKABLE void disconnectFromHost();
         Q_INVOKABLE QmlMqttSubscription *subscribe(const QString &topic);

         const QString hostname() const;
         void setHostname(const QString &newHostname);

         int port() const;
         void setPort(int newPort);

         const QMqttClient::ClientState state() const;
         void setState(const QMqttClient::ClientState &newState);

     signals:
         void hostnameChanged();
         void portChanged();

         void stateChanged();

     private:
         Q_DISABLE_COPY(QmlMqttClient)
         QMqttClient m_client;
     };

     #endif // QMLMQTTCLIENT_H