#include "widget.h" #include "ui_widget.h" Widget::Widget(QWidget *parent) : QWidget(parent) , ui(new Ui::Widget) { ui->setupUi(this); mqtt = new QMQTT::Client(); connect(mqtt, &QMQTT::Client::connected, []{ qDebug()<< "connected"; }); connect(mqtt, &QMQTT::Client::disconnected, []{ qDebug()<< "disconnect"; }); connect(mqtt, &QMQTT::Client::received, this, &Widget::onReceived); mqtt->setHostName("y.kjxry.cn"); //mqtt->setHostName("mq.tongxinmao.com"); //18830 //mqtt->setHostName("www.kjxry.cn"); mqtt->setPort(port); mqtt->setKeepAlive(60); mqtt->setClientId("C001"); //唯一id, 相同id不能同时连接 mqtt->setUsername(userName); mqtt->setPassword(password.toUtf8()); mqtt->setAutoReconnect(true); //开启自动重连 mqtt->setCleanSession(true); //非持久化连接,上线时,将不再关心之前所有的订阅关系以及离线消息 mqtt->setVersion(QMQTT::V3_1_1); qDebug()<< "ver" << mqtt->version(); mqtt->connectToHost(); } Widget::~Widget() { delete ui; } //接收到的消息 void Widget::onReceived(const QMQTT::Message& message) { qDebug() << "recv" << message.topic() << message.payload(); } void Widget::on_pushButton_2_clicked() { //不同的订阅方式 //mqtt->subscribe("alarm/led", 1); //mqtt->subscribe("+/led", 1); mqtt->subscribe("alarm/#", 1); } void Widget::on_pushButton_3_clicked() { //QMQTT::Message message(i, EXAMPLE_TOPIC, QString("Number %1").arg(i).toUtf8()); QMQTT::Message message; message.setTopic(topic); message.setPayload("test"); message.setRetain(true); //保留最后一条数据 mqtt->publish(message); }