Ошибка QAbstractSocket при установке MQTT в QT C ++ - PullRequest
1 голос
/ 08 мая 2020

Я пытаюсь собрать и установить QMqtt для QT C ++ в Ubuntu. Я выполнил следующие команды, но получаю ошибку.

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, но возникла та же ошибка.

Пожалуйста, помогите мне решить эту проблему. Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 08 мая 2020

После попытки с текущей веткой, ошибка все еще возникает. Пробую другую ветку.

git clone https://github.com/qt/qtmqtt.git --branch 15.3
0 голосов
/ 08 мая 2020

На самом деле в классе 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);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...