概述
Qt开发MQTT程序有两种方式,一个是Qt官方提供的基于MQTT的封装,一个是第三方(EMQ)开发的用于Qt调用MQTT的接口,二者使用方法大同小异,并且均提供了源码。最好使用Qt官方提供的封装来使用MQTT。
下载
Qt官方在github上提供了源代码,地址:https://github.com/qt/qtmqtt
mqtt源码版本要跟自己qt版本相同,不然会有各种问题,我这边下载了qtmqtt 5.12.12版本。
编译源码
如果你的是linux或者ARM也是如此编译,但是如果是ARM板子,需要先配置交叉编译环境,配置交叉编译环境可以看我以往的文章。https://blog.csdn.net/qq_42851716/article/details/124447518 。
然后编译完成以后window版本会有*.dll的库文件,
此时需要把mqtt编译后的库文件和头文件加入到qt安装目录里面,也可以单独在工程里面添加。
这里添加到工程目录,首先将mqtt头文件全部提取。
然后新建文件夹QtMqtt,将刚刚提取的.h文件全部复制到文件夹内,
最后将头文件添加到QT安装路径的 D:\QT5.12.12\5.12.12\mingw73_64\include
然后把 mqtt库文件添加到 D:\QT5.12.12\5.12.12\mingw73_64\lib
在工程中使用
添加OpenSSL,也是重头戏
所属模块:QT += network
由于关于QT的SSL资料网上不多,也是我写这篇文章的原因,关于SSL的介绍这里就赘述了,QtMqtt的SSL看官网文档介绍也是支持的,但是没有集成SSL的库文件,所以需要我们下载openssl的库文件,添加到qt安装目录。
QT的官方文档:
https://doc.qt.io/archives/qt-5.12/ssl.html
https://doc.qt.io/archives/qt-5.5/opensslsupport.html
下载openssl库文件
验证是否支持SSL ,在QT中看 QSslSocket::supportsSsl()返回的是true还是false,如果是false,也就是qt没有找到SSL库文件,
首先查看你QT的SSL版本,使用