Qt6.5.2使用qmake构建无法识别mqtt模块,如何解决?

如qt6应该是集成了mqtt的,Qt6.5.2使用qmake构建无法识别mqtt模块

【相关推荐】



  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/1063771
  • 这篇博客也不错, 你可以看下用qt编译qmake
  • 您还可以看一下 飞鱼老师的Qt入门教程课程中的 Qt6环境搭建小节, 巩固相关知识点
  • 除此之外, 这篇博客: Qt5.14.2开发Mqtt应用程序中的 3.3、QT测试程序编写 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:

    新建一个QWidget或者QMainWindow的程序,然后在所在的路径下创建两个文件夹:

    QtMqtt
    QtMqttLib
    

    然后将编译产物中include里的所有.h文件复制到QtMqtt目录下,将lib目录下的libQt5Mqtt.aQt5Mqtt.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信号来判断自行实现自己的槽函数。

      等等。

      最后提醒一句:少看垃圾博文,多动手,实践才能出真知!


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^