Подключение к 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();
    });