开发环境:win7 64 + Qt5.9

基于MQTT协议的优良特性,和所从事的软件开发消息较多,与MQTT较为契合,因此先调研MQTT的使用。

一、MQTT官方库下载路径

github地址:https://github.com/qt/qtmqtt

我选择下载5.10版本。

二、编译下载的MQTT

我这里的编译环境是:Qt5.12.3+

编译完成后:bin目录下就是我们要的库文件:

三、新建MqttClient工程,将MQTT库作为外部库导入

新建工程目录下新建lib  include目录

打开新建工程的pro文件,添加:

QT       += core gui networkwin32:CONFIG(release, debug|release): LIBS += -L$$PWD/lib/ -lQt5Mqtt
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/lib/ -lQt5MqttdINCLUDEPATH += $$PWD/include
DEPENDPATH += $$PWD/include

将 库文件放到新建工程的lib文件下

在mainwindow.h中加入头文件引用

#include "include/qmqttclient.h"

将所有的头文件拷贝到i新建nclude文件夹下

四、链接服务器、断开服务器、订阅消息、发布下次、接收消息代码

初始化mqtt指针

    QMqttClient * m_client;//mqtt client指针m_client  =  new QMqttClient(this);

链接断开服务器

void MainWindow::on_pushButton_clicked()
{//未连接服务器则连接if (m_client->state() == QMqttClient::Disconnected) {m_client->setHostname("127.0.0.1");m_client->setPort(1883);m_client->connectToHost();} else {//断开连接m_client->disconnectFromHost();}
}

订阅消息

void MainWindow::on_pushButton_3_clicked()
{QString topicSub ="firsttopic";;if(m_client->state() == QMqttClient::Connected){m_client->subscribe(topicSub, 0);connect(m_client, SIGNAL(messageReceived(QByteArray,QMqttTopicName)), this, SLOT(receiveMess(QByteArray,QMqttTopicName)));return;}
}

发布消息

void MainWindow::on_pushButton_2_clicked()
{QString topic ="firsttopic";QString mess ="第一条消息";if (m_client->publish(topic,mess.toUtf8()) == -1){}//QMessageBox::critical(this, QLatin1String("Error"), QLatin1String("Could not publish message"));
}

接收消息

 connect(m_client, SIGNAL(messageReceived(QByteArray,QMqttTopicName)), this, SLOT(receiveMess(QByteArray,QMqttTopicName)));void MainWindow::receiveMess(const QByteArray &message, const QMqttTopicName &topic)
{QString content;content = QDateTime::currentDateTime().toString() + QLatin1Char('\n');content += QLatin1String(" Received Topic: ") + topic.name() + QLatin1Char('\n');content += QLatin1String(" Message: ") + message + QLatin1Char('\n');ui->textEdit->append(content);
}

五、验证

链接服务器:

断开服务器

发布消息

通过MQTT.fx订阅程序发布的消息

接收消息

QT+MQTT 使用MQTT官方库相关推荐

  1. Linux下QT编程之MQTT实战

    应课设要求需要使用MQTT通信协议进行网关开发,所以就花了时间捣鼓一下,也遇到很多的坑所以写了这篇博客记录一下. 1.mqtt服务器有很多在这里我选择EMQ X因为这个是开源并且还有可视化的后台管理便 ...

  2. mqtt服务器搭建与qt下的mqtt客户端实现

    一.mqtt介绍 MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一个基于客户端-服务器的消息发布/订阅传输协议.MQTT协议是轻量.简单. ...

  3. 翻译QT使用手册:将库添加到项目

    将库添加到项目 除了 Qt 库之外,您还可以将其他库添加到您的项目中.该过程取决于图书馆的类型和位置.您可以添加系统库.您自己的库或第三方库.该库可以位于当前项目的构建树中,也可以位于另一个构建树中. ...

  4. QT入门第十天 QT安装和使用alsa库和jpeg库实现音视频录制

    QT入门第十天QT安装和使用alsa库和jpeg库实现音视频录制 第一章 ALSA库的移植和使用 1.ALSA简介 2.移植ALSA (1)移植步骤 3.把移植好的库下载到开发板配置 4.使用移植好的 ...

  5. 【MQTT】MQTT简介+安装+使用

    目录 前言 MQTT 协议简介 为何选择 MQTT MQTT 通讯运作方式 MQTT 协议帧格式 MQTT服务器搭建和使用 公共MQTT 测试服务器 MQTT服务器搭建 各种MQTT代理服务程序比较 ...

  6. python wheel库(安装包查找)(适用于Python扩展程序包的非官方Windows二进制文件、Pypi官方库、清华大学开源软件镜像源)

    适用于Python扩展程序包的非官方Windows二进制文件 Unofficial Windows Binaries for Python Extension Packages Pypi官方库 官方库 ...

  7. C++将带ui界面的qt工程封装为动态库dll

    C++将带ui界面的qt工程封装为动态库dll 功能如下 完整源代码实现如下 功能如下 将工程封装后可以在别的工程下直接引用该界面,以及该界面的函数, 完整源代码实现如下 #ifndef BUILD_ ...

  8. Qt Creator向项目添加库

    Qt Creator向项目添加库 向项目添加库 添加库 向项目添加库 除了Qt库之外,您还可以将其他库添加到您的项目中.库的添加方式取决于库的类型和位置.您可以添加系统库,自己的库或第三方库.该库可以 ...

  9. 这几个常用的 Go 官方库,性能居然还不如三方开源库

    Go 语言官方库给我们一贯的印象是:强大.好用.但是,金无足赤,人无完人,在一些性能要求苛刻的场景例如 json 解析,某些官方库的表现不尽如人意. 本文介绍几个对标官方库的开源库,它们的性能远超前者 ...

最新文章

  1. 设计模式(4)-序列生成器之单例模式
  2. 应该使用c# 预定义类型 还是绝对不要使用预定义类型。
  3. python贴吧发帖脚本-分享用Python写的99收抢单小脚本,仅供学习
  4. java笔记:自己动手写javaEE
  5. 【Linux网络编程学习】使用socket实现简单服务器——多进程多线程版本
  6. dictionary在python中什么意思_Python 字典(Dictionary)操作详解
  7. 2.6 定位数据不匹配
  8. Android车机之TextToSpeech
  9. 详细通用phpstudy本地搭建网站以及cms搭建教程
  10. 儿童吹泡泡水简单配方_吹泡泡溶液配方大集合吹泡泡溶液最佳配方
  11. java 九宫格数独_玩转数独之九宫数独进阶技巧
  12. 服务器移动用户打不开网站图片,为什么有些网站移动网络打不开?
  13. 安装SQL 2000 企业版
  14. 如何使用keepalive实现虚拟IP
  15. 充电桩,成了新能源汽车发展的“拦路虎”?
  16. 论文投稿系列之Cover Letter写法(一)
  17. Linux系统基础操作管理
  18. Lte/5G中的RSRP、RSRQ、SINR、MCS介绍
  19. 宝塔数据库密码错误处理
  20. 手机验证码平台,怎么发送手机验证码,php开发手机验证码短信接口功能

热门文章

  1. 移动电影院2.0发布及垂直社交等功能体验
  2. 改变人类进程的,除了霍金,还有他的好基友们
  3. 很好很强大的六个SEO关键词分析工具
  4. 临界资源、临界区、信号量、P,V操作
  5. 数学建模(七) 元胞自动机
  6. 转义字符的意义何在?
  7. 链克迎来大涨?迅雷:这只是前戏,“王炸”还在后头呢!
  8. 吃球球C++ 配合easyX
  9. Thoughtworks XStream介绍
  10. kalman、particle filter直白理解