您的位置:首页 > 汽车 > 新车 > 湛江免费模板建站_新疆建设工程信息网喀什地区_网站模板搭建_高端企业网站建设

湛江免费模板建站_新疆建设工程信息网喀什地区_网站模板搭建_高端企业网站建设

2025/5/16 17:38:22 来源:https://blog.csdn.net/qq_17769915/article/details/143937543  浏览:    关键词:湛江免费模板建站_新疆建设工程信息网喀什地区_网站模板搭建_高端企业网站建设
湛江免费模板建站_新疆建设工程信息网喀什地区_网站模板搭建_高端企业网站建设

这里写自定义目录标题

  • 一、编译安装
  • 二、代码应用

一、编译安装

1、下载源码
这里建议以下地址源码,对比了多个源码,发现这个较为好用,接口较全。

git clone https://github.com/emqx/qmqtt

2、编译源码

cd qmqtt
qmake
make
make install

以上指令可以将编译好的库和头文件安装到系统中指定的位置,我们在使用的时候可以通过以下片段进行引用

QT += qmqtt

如果不想这样使用,在make的生成目录中有includ和lib文件夹,这里需要注意一下,需要把src/mqtt下的头文件复制到make生成的include文件夹中,然后才能正常使用include和lib文件夹。

二、代码应用

.h声明,引用qmqtt头文件,

#include "qmqtt.h" /*包含头文件*/
#include <QTimer>QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECT
public:Widget(QWidget *parent = nullptr);~Widget();private:Ui::Widget *ui;QMQTT::Client* pClient;QTimer mTimer;public slots:void slotConnect();void slotDisConnect();void slotRecv(const QMQTT::Message& message);void slotCyclePub();void on_pushButton_clicked();
private slots:void on_pushButton_2_clicked();
};

.cpp实现

#include <QDebug>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);pClient = new QMQTT::Client;connect(pClient,&QMQTT::Client::connected,this,&Widget::slotConnect);connect(pClient,&QMQTT::Client::disconnected,this,&Widget::slotDisConnect);connect(pClient,&QMQTT::Client::received,this,&Widget::slotRecv);pClient->setHostName("localhost");pClient->setPort(1883);pClient->connectToHost();pClient->setAutoReconnect(true);mTimer.setInterval(100);connect(&mTimer,&QTimer::timeout,this,&Widget::slotCyclePub);
}Widget::~Widget()
{delete ui;
}void Widget::slotConnect()
{qDebug() << "conn succ";
}void Widget::slotDisConnect()
{qDebug() << "disconnect, reconn ";
}void Widget::slotRecv(const QMQTT::Message& message)
{qDebug() <<"slotRecv:::" <<message.topic() << message.payload();/*接受话题并打印*/
}void Widget::slotCyclePub()
{static int cnt = 0;QMQTT::Message msg;msg.setTopic(QString("hello"));msg.setPayload(QString("测试>>%1").arg(cnt).toLocal8Bit());pClient->publish(msg);/*发布话题消息*/cnt++;
}void Widget::on_pushButton_clicked()
{if(mTimer.isActive()){mTimer.stop();}else{mTimer.start();}
}void Widget::on_pushButton_2_clicked()
{qDebug() << "sub:::" ;pClient->subscribe(QString("hello")); /*订阅话题*/
}

至此,关于mqtt协议与qt联合开发的简单实现和测试完成。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com