QT编译安装QtMqtt子模块,WIN平台

简介: QT编译安装QtMqtt子模块,WIN平台

系统:Windows10

环境:QT5.12.9

下载源代码编译

GitHub上下载的源代码未发现有.pro文件所以无法一直无从下手怎么去编译,然后偶然的机会在CSDN上打开GitHub加速下载链接惊喜的发现有.pro文件,这里给出链接:点击直达

GitHub原链接:

当我们下载好后解压打开工程文件,取消影子构建,然后点击构建

当编译完成过后会有几个新的文件夹生成到我们的代码目录中

添加库文件到QT安装目录

然后我们需要用到的文件有:

然后我们进入qt的安装目录,进入到你需要使用的编译器的文件夹,我这里的windows平台用的是mingw所以就进入这个文件夹

然后再include目录下新建一个QtMqtt文件夹然后讲src/mqtt文件夹下的所有.h文件复制过来

然后是将编译的lib文件中的.dll文件存放到编译器目录的bin文件中,将.pri和.a文件存放到lib文件中

测试工程

ui页面

.pro工程文件

QT   +=  qmqtt

添加头文件

#include <QtMqtt/qmqtt.h>

完整的.c文件

#include "testmqtt.h"
#include "ui_testmqtt.h"
testMqtt::testMqtt(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::testMqtt)
{
    client = new QMQTT::Client(); // 初始化QMQTT客户指针
    ui->setupUi(this);
    connect(client, SIGNAL(received(QMQTT::Message)),this, SLOT(MQTT_Received(QMQTT::Message)));
}
testMqtt::~testMqtt()
{
    delete ui;
}
void testMqtt::on_btn_connect_clicked()
{
    QHostAddress host(ui->edit_ip->text());
    quint16 port = ui->edit_port->text().toUInt();
    QString id = "qt-client";
    QString username = "useradmin";   // 用户名
    QByteArray password = "password"; // 登录密码
    client->setKeepAlive(60); // 心跳
    client->setHost(host); // 设置 EMQ 代理服务器
    client->setPort(port); // 设置 EMQ 代理服务器端口
    client->setClientId(id); // 设备 ID
    client->setUsername(username);
    client->setPassword(password);
    client->cleanSession();
    client->setVersion(QMQTT::MQTTVersion::V3_1_1); // 设置mqtt版本
    qDebug()<<port<<endl;
    qDebug()<<host<<endl;
    client->connectToHost(); // 连接 EMQ 代理服务器
    QTimer::singleShot(1000, this, [=](){
        ui->edit_message->insertPlainText("链接成功\n");
    });
}
void testMqtt::on_btn_subscribe_clicked()
{
    client->subscribe(ui->edit_topic->text(),quint8(ui->cmb_qos->currentText().toInt())); // 订阅主题  对应取消订阅unsubscribe
    ui->edit_message->insertPlainText("订阅了["+ui->edit_topic->text()+"]主题\n");
}
void testMqtt::on_btn_publish_clicked()
{
    QMQTT::Message msg;
    msg.setQos(quint8(ui->cmb_qos->currentText().toInt()));
    msg.setTopic(ui->edit_topic->text());
    msg.setPayload(ui->edit_pushtext->text().toUtf8());
    client->publish(msg);
    ui->edit_message->insertPlainText("发送:" + ui->edit_pushtext->text().toUtf8()+"\n");
}
void testMqtt::MQTT_Received(QMQTT::Message message)
{
    QString str = message.payload();
    ui->edit_message->insertPlainText("收到消息主题[ " + message.topic() +"]:"+str.toLocal8Bit() + "\n");
}

完整的.h文件

#ifndef TESTMQTT_H
#define TESTMQTT_H
#include <QWidget>
#include <QtMqtt/qmqtt.h>
#include <QDebug>
#include <QTimer>
namespace Ui {
class testMqtt;
}
class testMqtt : public QWidget
{
    Q_OBJECT
public:
    explicit testMqtt(QWidget *parent = nullptr);
    ~testMqtt();
private slots:
    void on_btn_connect_clicked();
    void on_btn_subscribe_clicked();
    void on_btn_publish_clicked();
    void MQTT_Received(QMQTT::Message message);
private:
    Ui::testMqtt *ui;
    QMQTT::Client *client;
};
#endif // TESTMQTT_H

最终效果

快下班了代码写的比较着急,但效果大概就是这样,可以作为参考,后续可能还会做一期Linux和arm上的编写敬请期待。

2021-10-15 补充:将配置文件添加到安装目录

将编译好的配置文件,如下图

添加到QT编译器目录的modules中

配置完成过后使用qmqtt编译的时候可能还会出现找不到文件的情况

这里是因为#include<>和#include"“的区别,前者是从标准库中去寻找文件,后者则是从工程中寻找文件,遇到这个错误只需要将qmqtt的头文件换成#include”"引用即可,这里不止一处会出现该问题需要注意,这里还需要注意的是编译的MQTT库文件不要删除因为配置文件中有相关目录是指向编译文件的目录的。

完整文件下载

我用阿里云盘分享了「qt mqtt」,你可以不限速下载🚀

复制这段内容打开「阿里云盘」App 即可获取

链接:https://www.aliyundrive.com/s/vrTRX16bpZq


相关实践学习
快速体验阿里云云消息队列RocketMQ版
本实验将带您快速体验使用云消息队列RocketMQ版Serverless系列实例进行获取接入点、创建Topic、创建订阅组、收发消息、查看消息轨迹和仪表盘。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
编译器 C语言 Windows
cryptopp使用Qt mingw编译,以及海思平台交叉编译
cryptopp使用Qt mingw编译,以及海思平台交叉编译
380 0
|
8天前
|
监控 编译器 Windows
Qt5实现Windows平台串口通信
Qt5实现Windows平台串口通信
|
Linux 编译器 C语言
QT编译安装QtMqtt子模块,Linux平台
QT编译安装QtMqtt子模块,Linux平台
458 0
|
Ubuntu Java 编译器
iMX6 yocto平台QT交叉编译环境搭建
iMX6 yocto平台QT交叉编译环境搭建
505 0
iMX6 yocto平台QT交叉编译环境搭建
统信UOS系统开发笔记(三):从Qt源码编译安装之编译安装Qt5.12.8
上一篇,是使用Qt提供的安装包安装的,有些场景需要使用到自己编译的Qt,所以本篇如何在统信UOS系统上编译Qt5.12.8源码。
统信UOS系统开发笔记(三):从Qt源码编译安装之编译安装Qt5.12.8
|
IDE 编译器 开发工具
统信UOS系统开发笔记(四):从Qt源码编译安装之编译安装QtCreator4.11.2,并配置编译测试Demo
上一篇已经从Qt源码编译了Qt,那么Qt开发的IDE为QtCreator,本篇从源码编译安装QtCreator,并配置好构建套件,运行Demo并测试。
|
存储 监控 物联网
产品分享:Qt+Arm基于RV1126平台的内窥镜软硬整套解决方案(实时影像、冻结、拍照、录像、背光调整、硬件光源调整,其他产品也可使用该平台,如视频监控,物联网产品等等)
产品分享:Qt+Arm基于RV1126平台的内窥镜软硬整套解决方案(实时影像、冻结、拍照、录像、背光调整、硬件光源调整,其他产品也可使用该平台,如视频监控,物联网产品等等)
产品分享:Qt+Arm基于RV1126平台的内窥镜软硬整套解决方案(实时影像、冻结、拍照、录像、背光调整、硬件光源调整,其他产品也可使用该平台,如视频监控,物联网产品等等)
|
JSON 数据格式 Windows
Qt平台下使用QJson构建JSON字符串
Qt平台下使用QJson构建JSON字符串
557 0
Qt平台下使用QJson构建JSON字符串
|
JSON API C语言
Qt平台下使用QJson解析JSON字符串
Qt平台下使用QJson解析JSON字符串
445 0
Qt平台下使用QJson解析JSON字符串
|
存储 Shell
编译移植龙芯2K1000平台下的qt-5.13
本文记录对龙芯2K进行qt5.13.1版本的移植。 本文中对于tslib的安装不做讲解,使用了QT4进行核心板开发的童鞋一般情况下,应该已经安装好了tslib了,直接使用就行。
872 0

热门文章

最新文章

推荐镜像

更多
  • qt