GitHub - emqx/qmqtt: MQTT client for Qt
1.安装5.多版本的qt
2.在gethub下载;
GitHub - emqx/qmqtt: MQTT client for Qt
3.进行安装qt creator即可
3.路径自己定义
4.移植文件
1.
2.
3.
4
(3)测试
- 在Qt Creator中创建一个新项目
- 选择“Qt Console Application”或“Qt Widget Application”
- 在.pro文件中添加以下行:
QT += qmqtt
- 在代码中包含MQTT头文件:
#include "mqtt/qmqtt.h"
2.建一个MQTT客户端对象,并连接到MQTT服务器:
QMQTT::Client *client = new QMQTT::Client(QHostAddress("localhost"), 1883);
client->connectToHost();
3.信号与槽:
// connect(mqttClient,SIGNAL(received(QMQTT::Message&message)),this,
// SLOT(receivedMessage(QMQTT::Message& message)));
connect(mqttClient,&QMQTT::Client::connected,this,&HomeWindow::handleConnect);
connect(mqttClient,&QMQTT::Client::received,this,&HomeWindow::receivedMessage);
connect(mqttClient,&QMQTT::Client::subscribed,this,&HomeWindow::handleSubcribe);
connect(mqttClient,&QMQTT::Client::published,this,&HomeWindow::handlePublish);
发布消息:
void HomeWindow::handlePublish(const QMQTT::Message &message, quint16 msgid)
{
ui->mqttMessageText->append("成功发布消息: "+message.payload()+"\r\n");
}
void HomeWindow::on_publishPB_clicked()
{
QString msgplayload = ui->mqttMessageText->toPlainText().trimmed();
QString topic = ui->publishText->text().trimmed();
QMQTT::Message *msg = new QMQTT::Message();
msg->setPayload(msgplayload.toLatin1());
msg->setTopic(topic);
mqttClient->publish(*msg);
}
- 订阅主题:
void HomeWindow::on_subcribePB_clicked()
{
QString topic = ui->subcribeText->text().trimmed();
if (topic.isEmpty()){
QMessageBox::information(this,"tip","主题不能为空!");
}
else{
mqttClient->subscribe(topic);
}
}
//接收订阅主题的信息
void HomeWindow::receivedMessage(const QMQTT::Message& message)
{
QByteArray playload = message.payload();
qDebug()<< playload;
ui->mqttMessageText->append("收到主题 "+message.topic()+" 消息"+" "+playload+"\r\n");
}