2013-02-21 13 views
7

Sto utilizzando la nuova sintassi di connessione per Qt5. QNetworkReply ha un segnale chiamato error e anche una funzione denominata error. Questo provoca problemi quando si tenta di connettersi al segnale:Connessione a QNetworkReply :: segnale di errore

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

errore C2664: 'QMetaObject :: Connection QObject :: connect (const QObject *, const char *, const QObject *, const char *, Qt :: ConnectionType)': non può convertire il parametro 2 da '-funzione in overload' a 'const char *' contesto non permette di disambiguazione di funzione in overload

Come faccio a dire il compilatore (MSVC) che voglio connettersi al segnale piuttosto che alla funzione?

+0

Eventuali duplicati di [Collegamento segnali di sovraccarico e gli slot in Qt 5] (http://stackoverflow.com/questions/16794695/connecting-overloaded-signals-and- slot-in-qt-5) –

risposta

13

È necessario manualmente per lanciare il puntatore a funzione per affrontare il corretto funzionamento:

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

Questa è la noted conseguenza dell'utilizzo di nuova sintassi per funzioni sovraccaricate:

contro:

Sintassi molto complicata in caso di sovraccarico?

P.S. Si possono trovare ad esempio simile sul link qui sopra:

QObject::connect(socket, static_cast<void (QTcpSocket::*)(QAbstractSocket::SocketError)>(&QAbstractSocket::error), [socket] (QAbstractSocket::SocketError) { 
     qDebug()<< "ERROR " << socket->errorString(); 
     socket->deleteLater(); 
    }); 
Problemi correlati