在QT C ++中安装MQTT时出错QAbstractSocket

问题描述 投票:0回答:2

我正在尝试在Ubuntu中为QT C ++构建和安装QMqtt。我执行了以下命令,但出现错误。

git clone https://github.com/qt/qtmqtt.git
mkdir qtmqtt-build
cd qtmqtt-build
qmake ../qtmqtt/qtmqtt.pro

然后在输入命令后输入

make

我有一个错误

/home/atn/qtmqtt/src/mqtt/qmqttconnection.cpp:163:39: error: ‘errorOccurred’ is not a member of ‘QAbstractSocket’
163 |     connect(socket, &QAbstractSocket::errorOccurred, this, &QMqttConnection::transportError);
make[2]: *** [Makefile:639: .obj/qmqttconnection.o] Error 1
make[2]: Leaving directory '/home/atn/qt-build/src/mqtt'
make[1]: *** [Makefile:47: sub-mqtt-make_first] Error 2
make[1]: Leaving directory '/home/atn/qt-build/src'
make: *** [Makefile:49: sub-src-make_first] Error 2

我也尝试过从QtCreator进行构建和安装,但遇到相同的错误。

请帮助我解决此问题。预先感谢。

c++ qt build install mqtt
2个回答
0
投票

实际上QAbstractSocket类中没有errorOccured函数,也许作者忘记了提交一些辅助程序重载...无论如何,都有QAbstractSocket::error,但是QAbstractSocket::error信号过载,因此要使用功能指针连接到该信号,您需要使用QOverload

打开文件src/mqtt/qmqttconnection.cpp

查找:connect(socket, &QAbstractSocket::errorOccurred, this, &QMqttConnection::transportError);

并将其更改为:connect(socket, QOverload<QAbstractSocket::SocketError>::of(&QAbstractSocket::error), this, &QMqttConnection::transportError);


0
投票

尝试使用当前分支后仍然出现错误。我尝试另一个分支。

git clone https://github.com/qt/qtmqtt.git --branch 15.3
© www.soinside.com 2019 - 2024. All rights reserved.