mqttclient.h 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. #ifndef MQTTCLIENT_H
  2. #define MQTTCLIENT_H
  3. #include <QtMqtt/qmqttclient.h>
  4. #include <QtMqtt/qmqttmessage.h>
  5. #include <QObject>
  6. class MqttClient : public QObject {
  7. Q_OBJECT
  8. public:
  9. static MqttClient *getInstance(); // 静态成员函数,用于获取单例实例
  10. static MqttClient *createNewInstance();
  11. explicit MqttClient(QObject *parent = nullptr);
  12. void subscribeToTopic(const QString &topic);
  13. void sendMessage(const QString &topic, const QByteArray &message, quint8 qos,
  14. bool isRetainedMsg);
  15. void onMessageReceived(const QByteArray &message, const QMqttTopicName &topic);
  16. void connectToMqttBroker(const QString &hostname, quint16 port, const QString &username,
  17. const QString &password, const QString &clientId,
  18. const QStringList &topicsToSubscribe);
  19. void subscribeToTopics(const QStringList &topics);
  20. void connectToMqttBroker();
  21. signals:
  22. void connected();
  23. void messageAndTopicReceived(const QByteArray &message, const QMqttTopicName &topic);
  24. void proMessageReceived(const QByteArray &message, const QMqttTopicName &topic);
  25. private slots:
  26. void onConnected();
  27. // void onDisconnected();
  28. void onStateChanged(QMqttClient::ClientState newState);
  29. void onError(QMqttClient::ClientError error);
  30. // void onMessageReceived(const QByteArray &message, const QMqttTopicName &topic);
  31. private:
  32. static MqttClient *instance; // 静态成员变量,用于保存单例实例
  33. QMqttClient *mqClient;
  34. QStringList m_subscribeTopics;
  35. };
  36. #endif // MQTTCLIENT_H