QT添加MQTT库

QT添加MQTT库
昕某人软件汇总
安装包采用官网下载的方式,当然,如果官网下载太慢的话,可以点击我准备的网盘链接,但是请注意版本问题,我个人提供的网盘链接中的版本可能不是最新版。以下奶牛快传链接为我个人提供。
QT在线安装包
我个人建议使用 QT 的在线安装方式安装,在更换镜像源之后的下载速度可以达到 7MB/S,速度相当可观,如果是低版本的 QT 可以使用离线安装的方式。
- 官网地址(当前最新4.2.0版本):QT在线下载工具官网
- 清华大学镜像站:清华大学开源软件镜像站
- 奶牛快传下载地址:QT 在线安装工具 4.2.0
镜像源更换软件 Fiddler5
此软件不是必须品,仅仅是为了加速 QT 的下载速度。
- 官网下载地址:Fiddler 官网
- 奶牛快传下载地址:Fiddler5下载
第三方 Mqtt 库
本文采用第三方的mqtt库来实现mqtt通信,目前已经经过测试,没有使用问题。
- GitHub 仓库:MQTT Client for Qt
- 奶牛快传地址:qmqtt
开源mqtt服务端 emqx
后续我们需要测试mqtt库是否添加成功,所以需要在本地搭建一个测试环境,emqx就是一个开源的mqtt服务器应用。
- 奶牛快传:emqxWindows 版
MQTT 测试工具
测试工具也可以使用MQTT.fx,看个人喜好,这里推荐的是下面这个。
开启 Fiddler5 代理软件(可选)
打开 Fiddler5 软件:
在软件的最下方输入以下内容来开启下载代理:
1 | urlreplace download.qt.io mirrors.ustc.edu.cn/qtproject/ |
上面这句话的意思就是将所有通过 download.qt.io 下载的地址更换成 mirrors.ustc.edu.cn/qtproject/
然后点击回车即可!
注意:在安装完成之前,请不要关闭此软件
安装 QT
windows11系统请使用管理员身份运行下载程序,在我电脑上,如果不以管理员身份打开的话,在选择 QT 版本的界面会卡死。
打开 QT 的在线安装程序:
登录你的 QT 账户,如果没有的话需要注册一个,QT 后续的几个版本都需要注册登录才能下载:
两个协议均勾选(如果你是商用,请仔细阅读一下):
点击 next,等待加载完成:
接下来的界面随便选一个即可(推荐选第二个,也就是不接受,不然可能给你发广告邮件):
选择安装位置:
接下来选择 QT 的版本和所需要的软件包:
这里简单说一下:
MSVC
:MSVC 是用于 Windows 下 VS 编译器的软件包,如果你想用VS开发QT话这个是必选,一般没有必要勾选MinGW
:这是 GCC 的一个 Windows 移植版本,此工具必须选择,后续的开发基本都是使用的 minGWAndroid
:如果需要安卓开发的话,此项必须选择- 后面以 QT 开头的文件,推荐都选上,这样以后就不需要再回来下载了
然后一路点击 NEXT,下载即可,再开代理的情况下,速度可以达到 10MB/S。
验证安装
在 QT 中新建一个工程:
名称路径自己选择:
我这里选择 qmake 作为构建工具:
默认生成一个 MainWindow:
不需要翻译:
接下来的编译套件,选择MinGW:
创建完成之后,我们在UI 文件中随便添加一点控件:
我这里添加了一个 Label 控件:
这里直接点击左下角的运行即可,如果你还下载了其他的构建套件,那么需要选择MinGW来构建(本文一律按照MinGW来):
点击运行:
至此,我们QT的安装工作已经完成了,接下来我们来添加MQTT的支持。
编译 MQTT 库
MQTT 库有两个,一个是官方库,一个是第三方库,二者的差别就是一个 API 上,使用方面没有太大区别。本文以第三方库为教程。
注意:如果你想尝试官网的库,那么需要在GitHub主页的分支里选择与你QT版本对应的分支来编译。
以下是第三方 MQTT 库的仓库:
下载源码,直接打开工程:
对着 src
目录右键,执行 qmake,再点击构建 src(注意工具链选择 MinGW,构建方式选择 Release)
这里需要注意:Release和Debug版本的选择,如果你的代码分两个版本,那么我推荐你分别使用Release和Debug构建库,然后在引用的时候手动区分。因为一般区分Release和Debug的方式是对Debug版本的库添加一个d,如mqtt.dll是Release版本的,那么Debug的为mqttd.dll,但是二者在这个库中使用不同方式编译出的dll文件是同名的,需要手动给Debug的添加d后缀,在这里,我并没有区分二者,也就是Release和Debug版本使用的是同一个库。
构建完成生成的目录如下:
然后我们需要拷贝生成的文件,分以下两步:
复制编译好的库:
打开编译好的目录中的 lib 目录,将其中的如下文件复制到一个自建的文件夹中,自建的文件夹名字建议为 lib
复制头文件
新建一个 include 文件夹,将” 源码” 中的头文件复制到新建的文件夹中
至此,我们编译库的过程已经结束。
部署 MQTT 库
新建一个工程,将上面做好的俩个文件夹放到工程目录中:
打开工程,进入工程 pro 文件中,添加 network
模块:
然后在空白处点击右键 -> 添加库 -> 外部库,进入配置页面:
选择库文件的地址和头文件目录,注意要取消勾选下面红框中的选项:
最终会自动在.pro 文件中添加如下内容:
使用 MQTT 库
使用 MQTT 库,只需要包含头文件即可:
1 |
主要的接口有如下:
槽
1 | void setHost(const QHostAddress& host); |
SIGNAL
1 | void connected(); |
测试
测试的代码可以私信我或者从我的个人博客中下载
部署服务端
部署 MQTT 服务端,打开上面下载好的 emqx 源码,进入 bin 目录,执行如下命令:
1 | emqx.cmd start |
执行后 cmd 窗口就可以关闭了,服务已经在后台运行。执行此命令只要不报错就算执行成功。
打开 http://127.0.0.1:18083,进入后台管理界面,默认的账号密码分别为:admin 和 public:
后台的界面如下:
启动 MQTTX,创建一个连接:
注意地址和端口,默认端口就是 1883,用户名密码为空。
连接成功如下:
输入一个 topic 和 message,点击发送:
测试客户端
打开上面的 DEMO,打开 mainwindow.cpp
,查看端口和地址是否正确:
主要代码如下:
运行 demo,点击 connect:
可以看到之前的消息也被同步过来了,现在我们发送一条消息试试:
先在 MQTTX 中订阅一个主题:
然后在 demo 中向这个主题发送消息:
可以看到 MQTTX 中收到了消息: