widget.cpp 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. #include "widget.h"
  2. #include "ui_widget.h"
  3. Widget::Widget(QWidget *parent)
  4. : QWidget(parent)
  5. , ui(new Ui::Widget)
  6. {
  7. ui->setupUi(this);
  8. mqtt = new QMQTT::Client();
  9. connect(mqtt, &QMQTT::Client::connected, []{
  10. qDebug()<< "connected";
  11. });
  12. connect(mqtt, &QMQTT::Client::disconnected, []{
  13. qDebug()<< "disconnect";
  14. });
  15. connect(mqtt, &QMQTT::Client::received, this, &Widget::onReceived);
  16. mqtt->setHostName("y.kjxry.cn");
  17. //mqtt->setHostName("mq.tongxinmao.com"); //18830
  18. //mqtt->setHostName("www.kjxry.cn");
  19. mqtt->setPort(port);
  20. mqtt->setKeepAlive(60);
  21. mqtt->setClientId("C001"); //唯一id, 相同id不能同时连接
  22. mqtt->setUsername(userName);
  23. mqtt->setPassword(password.toUtf8());
  24. mqtt->setAutoReconnect(true); //开启自动重连
  25. mqtt->setCleanSession(true); //非持久化连接,上线时,将不再关心之前所有的订阅关系以及离线消息
  26. mqtt->setVersion(QMQTT::V3_1_1);
  27. qDebug()<< "ver" << mqtt->version();
  28. mqtt->connectToHost();
  29. }
  30. Widget::~Widget()
  31. {
  32. delete ui;
  33. }
  34. //接收到的消息
  35. void Widget::onReceived(const QMQTT::Message& message)
  36. {
  37. qDebug() << "recv" << message.topic() << message.payload();
  38. }
  39. void Widget::on_pushButton_2_clicked()
  40. {
  41. //不同的订阅方式
  42. //mqtt->subscribe("alarm/led", 1);
  43. //mqtt->subscribe("+/led", 1);
  44. mqtt->subscribe("alarm/#", 1);
  45. }
  46. void Widget::on_pushButton_3_clicked()
  47. {
  48. //QMQTT::Message message(i, EXAMPLE_TOPIC, QString("Number %1").arg(i).toUtf8());
  49. QMQTT::Message message;
  50. message.setTopic(topic);
  51. message.setPayload("test");
  52. message.setRetain(true); //保留最后一条数据
  53. mqtt->publish(message);
  54. }