如qt6应该是集成了mqtt的,Qt6.5.2使用qmake构建无法识别mqtt模块
【相关推荐】
新建一个QWidget
或者QMainWindow
的程序,然后在所在的路径下创建两个文件夹:
QtMqtt
QtMqttLib
然后将编译产物中include里的所有.h文件复制到QtMqtt
目录下,将lib目录下的libQt5Mqtt.a
和Qt5Mqtt.dll
复制到QtMqttLib
目录下,如下所示:
然后打开QtForMqtt
工程,添加头文件以及库:
我的应用Demo程序很简单,就一个按钮:
在mainwindow.h中包含头文件:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QDebug>
#include <QMainWindow>
#include <QtMqtt/qmqttclient.h>
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
public slots:
void mqtt_connected();
void mqtt_disconnected();
private slots:
void on_mqtt_connect_host_clicked();
private:
Ui::MainWindow *ui;
QMqttClient *MqttClient;
};
#endif // MAINWINDOW_H
接下来的主业务程序就可以参考开发文档自由发挥了:
其中最常用的接口有几类:
设置相关
设置Hostname:void setHostname(const QString &hostname);
设置端口号: void setPort(quint16 port);
设置ClientId: void setClientId(const QString &clientId);
设置Username: void setUsername(const QString &username);
设置Password: void setPassword(const QString &password);
其它…
连接、断开连接、订阅、发布
连接: void connectToHost();
断开连接:void disconnectFromHost();
订阅:
QMqttSubscription *subscribe(const QMqttTopicFilter &topic, quint8 qos = 0);
QMqttSubscription *subscribe(const QMqttTopicFilter &topic,const QMqttSubscriptionProperties &properties, quint8 qos = 0);
发布:
Q_INVOKABLE qint32 publish(const QMqttTopicName &topic, const QByteArray &message = QByteArray(),quint8 qos = 0, bool retain = false);
Q_INVOKABLE qint32 publish(const QMqttTopicName &topic, const QMqttPublishProperties &properties,const QByteArray &message = QByteArray(),
quint8 qos = 0,bool retain = false);
提供可连接的信号
当成功连接时,可以通过连接void connected();
信号来判断,自行实现自己的槽函数。
当断开连接时,可以通过连接void disconnected();
信号来判断自行实现自己的槽函数。
收到下行消息时,可以通过连接messageReceived
信号来判断自行实现自己的槽函数。
等等。
最后提醒一句:少看垃圾博文,多动手,实践才能出真知!