mqttclient.h 1.5 KB

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