Подключение к QNetworkReply:: сигнал ошибки
Я использую новый синтаксис подключения для Qt5. QNetworkReply имеет сигнал под названием , а также функция под названием . Это вызывает проблемы при попытке подключения к сигнал:
connect(reply, &QNetworkReply::error, this, &MyClass::error);
ошибка c2664: 'QMetaObject::подключение от QObject::Connect(не константный объект QObject *,константный тип char *,константный объект QObject *,константный тип char *и Qt::тип подключения)' : не может преобразовать параметр 2 из 'перегрузки-функция" до " как const char *'и Контекст не позволяет неоднозначность перегруженных функций
Как сообщить компилятору (MSVC), что я хочу подключиться к сигналу, а не к функции?
1 ответов
вам нужно вручную привести указатель функции для обращения к правильной функции:
connect(reply, static_cast<void (QNetworkReply::*)(QNetworkReply::NetworkError)>(&QNetworkReply::error), this, &MyClass::error);
Это отметить следствием использования нового синтаксиса для перегруженных функций:
плюсы:
очень сложный синтаксис в случаях перегрузок?
P. S. Вы можете найти похожие примере по вышеуказанной ссылке:
QObject::connect(socket, static_cast<void (QTcpSocket::*)(QAbstractSocket::SocketError)>(&QAbstractSocket::error), [socket] (QAbstractSocket::SocketError) {
qDebug()<< "ERROR " << socket->errorString();
socket->deleteLater();
});