Qt 最新版6.9.0使用MQTT连接腾讯云详细教程

发布于:2025-05-24 ⋅ 阅读:(18) ⋅ 点赞:(0)

一、MQTT介绍

1. 概述

  • 全称: Message Queuing Telemetry Transport (消息队列遥测传输协议)
  • 类型: 轻量级的消息传输协议
  • 用途: 适用于物联网(IoT)设备和受限网络环境中的数据传输

2. 特点

  • 轻量级: 协议开销小,适合资源有限的设备
  • 低带宽: 高效利用网络带宽
  • 简单易用: 易于实现和集成
  • 可靠性高: 支持多种服务质量级别

3. 架构

  • 发布/订阅模式: 设备通过主题(Topic)进行通信
  • Broker: 中心节点,负责消息的转发
  • Client: 发布或订阅消息的终端设备

4. 工作流程

  1. 连接建立: 客户端与Broker建立TCP连接
  2. 认证与授权: 客户端提供用户名和密码进行身份验证
  3. 发布消息: 客户端将消息发送到指定主题
  4. 订阅消息: 客户端订阅感兴趣的主题
  5. 接收消息: Broker将消息分发给订阅了相应主题的客户端

5. 应用场景

  • 智能家居: 控制和监控家庭设备
  • 工业自动化: 实时数据采集和控制
  • 车联网: 车辆与基础设施之间的通信
  • 远程监控: 远程设备的状态监测和管理

二、MQTT库编译

1、源码下载

点击链接Qt MQTT
选择Qt版本下载
在这里插入图片描述
在这里插入图片描述

2、源码编译

将下载的源码解压后用Qt打开。
在这里插入图片描述
直接点击左下角编译
在这里插入图片描述
编译成功后会出现下图中的几个文件夹:
在这里插入图片描述

三、库的使用方法

1、首先将lib文件夹中的libQt6Mqtt.aQt6Mqtt.dll拷贝到自己工程中
在这里插入图片描述
2、将下载源码中\qtmqtt-6.9.0\src\mqtt目录中的头文件全部拷贝到自己工程对应目录中:
在这里插入图片描述
完成如下:
在这里插入图片描述
3、在自己工程中添加库:右键工程
在这里插入图片描述
在这里插入图片描述
选择库和对应头文件目录:
在这里插入图片描述
点击确定就OK了。

四、MQTT连接设备

1、包含头文件

#include <qmqttclient.h>
#include <qmqttsubscription.h>

2、定义一个mqtt客户端

QMqttClient *mqttClient = nullptr;

3、实例并连接相关信号与槽

this->mqttClient = new QMqttClient(this);
connect(this->mqttClient,&QMqttClient::messageReceived,this,&MainWindow::mqttReadyReadSlot);
connect(this->mqttClient,&QMqttClient::connected,this,
       [=]()
       {
           qDebug()<<"subscribe:"<<this->connectWidget->getTopic();
           QMqttTopicFilter topic(this->connectWidget->getTopic());
           this->mqttClient->subscribe(topic);
       });
void MainWindow::mqttReadyReadSlot(const QByteArray &message, const QMqttTopicName &topic)
{
    qDebug()<<message;
    qDebug()<<topic;
}  

4、连接服务器

        this->mqttClient->setHostname(para1);
        this->mqttClient->setPort(para2.toInt());
        this->mqttClient->setClientId(para3);
        this->mqttClient->setUsername(para4);
        this->mqttClient->setPassword(para5);
        this->mqttClient->setKeepAlive(1000);
        this->mqttClient->setProtocolVersion(QMqttClient::MQTT_3_1);

        this->mqttClient->connectToHost();

对应的参数在腾讯云上查看
在这里插入图片描述

5、订阅topic

 qDebug()<<"subscribe:"<<this->connectWidget->getTopic();
 QMqttTopicFilter topic(this->connectWidget->getTopic());
 this->mqttClient->subscribe(topic);

连接成功后订阅:

connect(this->mqttClient,&QMqttClient::connected,this,
        [=]()
        {
            qDebug()<<"subscribe:"<<this->connectWidget->getTopic();
            QMqttTopicFilter topic(this->connectWidget->getTopic());
            this->mqttClient->subscribe(topic);
        });

网站公告

今日签到

点亮在社区的每一天
去签到