2013-02-21 5 views
7

Я использую новый синтаксис подключения для Qt5. QNetworkReply имеет сигнал под названием error, а также функцию, называемую error. Это вызывает проблемы при попытке подключения к сигналу:Подключение к QNetworkReply :: error signal

connect(reply, &QNetworkReply::error, this, &MyClass::error); 

ошибка C2664: «QMetaObject :: Подключение QObject :: подключения (константный QObject *, константный символ *, Const QObject *, Const символ *, Qt :: ConnectionType)»: не удается преобразовать параметр 2 из„перегруженной-функции“к„сопзЬ символ *“ контекст не позволяет неоднозначности из перегруженной функции

Как сказать компилятор (MSVC), что я хочу для подключения к сигналу, а не к функции?

+0

Возможный дубликат [Подключение перегруженных сигналов и слотов в Qt 5] (http://stackoverflow.com/questions/16794695/connecting-overloaded-signals-and- слоты-в-кварта-5) –

ответ

13

Вам нужно вручную, чтобы бросить указатель функции для решения правильной функции:

connect(reply, static_cast<void (QNetworkReply::*)(QNetworkReply::NetworkError)>(&QNetworkReply::error), this, &MyClass::error); 

Это noted следствия использования нового синтаксиса для перегруженных функций:

минусов:

Очень сложный синтаксис в случаях перегрузок?

P.S. Вы можете найти аналогичный пример по ссылке выше:

QObject::connect(socket, static_cast<void (QTcpSocket::*)(QAbstractSocket::SocketError)>(&QAbstractSocket::error), [socket] (QAbstractSocket::SocketError) { 
     qDebug()<< "ERROR " << socket->errorString(); 
     socket->deleteLater(); 
    }); 
Смежные вопросы