当前位置:   article > 正文

Qt之qmqtt库的安装和使用_qmqtt.h

qmqtt.h

一、下载qmqtt源码

下载地址:https://github.com/emqtt/qmqtt

二、 编译qmqtt库

1、打开工程

2、选择默认构建套件后,点击Release->client,再点击“锤子”进行编译。

3、构建完毕,即可在工程目录下看到生成的lib文件夹,我们所需要的qmqtt库就在里面。

三、 使用qmqtt库 

1、在需要调用qmqtt的工程文件中添加:QT += network  如下图所示:

2、右键项目名称,点击添加库...,选择外部库,下一步。

其中库文件选择刚刚编译出来的lib文件夹下的libqmqtt.a,包含路径选择工程源码目录下的mqtt文件夹,选择平台,然后点击下一步,如图所示:

点击完成,Qt Creator则自动将qmqtt库路径及头文件路径都添加到工程文件中:

在需要使用mqtt的类的头文件中添加qmqtt.h头文件即可使用了,如下图所示。

四、使用示例 

1、测试程序界面如图所示:

2、示例代码如下:

Widget.h

  1. #ifndef WIDGET_H
  2. #define WIDGET_H
  3. #include <QWidget>
  4. #include <qmqtt.h>
  5. namespace Ui {
  6. class Widget;
  7. }
  8. class Widget : public QWidget
  9. {
  10. Q_OBJECT
  11. public:
  12. explicit Widget(QWidget *parent = 0);
  13. ~Widget();
  14. private slots:
  15. void on_connect_clicked();
  16. void mqtt_connect_success();
  17. void mqtt_disconnect();
  18. void mqtt_sub_success(QString topic, quint8 qos = 0);
  19. void mqtt_recv_msg(QMQTT::Message msg);
  20. void on_sub_clicked();
  21. void on_pub_clicked();
  22. private:
  23. Ui::Widget *ui;
  24. QMQTT::Client *mqtt;
  25. };
  26. #endif // WIDGET_H

Widget.cpp

  1. #include "widget.h"
  2. #include "ui_widget.h"
  3. Widget::Widget(QWidget *parent) :
  4. QWidget(parent),
  5. ui(new Ui::Widget)
  6. {
  7. ui->setupUi(this);
  8. }
  9. Widget::~Widget()
  10. {
  11. delete ui;
  12. }
  13. void Widget::on_connect_clicked()
  14. {
  15. mqtt = new QMQTT::Client(QHostAddress(QString(ui->host->text())),ui->port->text().toInt());
  16. connect(mqtt, SIGNAL(connected()), this, SLOT(mqtt_connect_success()));
  17. connect(mqtt, SIGNAL(disconnected()), this, SLOT(mqtt_disconnect()));
  18. connect(mqtt, SIGNAL(subscribed(QString,quint8)), this, SLOT(mqtt_sub_success(QString,quint8)));
  19. connect(mqtt, SIGNAL(received(QMQTT::Message)), this, SLOT(mqtt_recv_msg(QMQTT::Message)));
  20. mqtt->setCleanSession(true);
  21. mqtt->connectToHost(); //连接mqtt
  22. }
  23. void Widget::mqtt_connect_success() //连接成功
  24. {
  25. ui->textBrowser->append("连接成功");
  26. }
  27. void Widget::mqtt_disconnect() //连接断开
  28. {
  29. ui->textBrowser->append("连接断开");
  30. }
  31. void Widget::mqtt_sub_success(QString topic,quint8 qos) //订阅成功
  32. {
  33. QString msg = "订阅主题 ";
  34. msg += ui->sub_topic->text();
  35. msg += " 成功";
  36. ui->textBrowser->append(msg);
  37. }
  38. void Widget::mqtt_recv_msg(QMQTT::Message msg) //接收消息处理
  39. {
  40. QString recv_msg = "Topic:";
  41. QString data = msg.payload();
  42. recv_msg += msg.topic();
  43. recv_msg += " Payload:";
  44. recv_msg += data;
  45. ui->textBrowser->append(recv_msg);
  46. }
  47. void Widget::on_sub_clicked() //订阅
  48. {
  49. mqtt->subscribe(ui->sub_topic->text(),1);
  50. }
  51. void Widget::on_pub_clicked() //发布消息
  52. {
  53. QMQTT::Message msg;
  54. msg.setTopic(ui->pub_topic->text());
  55. msg.setPayload(ui->pub_msg->text().toLocal8Bit());
  56. mqtt->publish(msg);
  57. }

main.c 

  1. #include "widget.h"
  2. #include <QApplication>
  3. int main(int argc, char *argv[])
  4. {
  5. QApplication a(argc, argv);
  6. Widget w;
  7. w.show();
  8. return a.exec();
  9. }

3、测试结果

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/510572
推荐阅读
相关标签
  

闽ICP备14008679号