连接到QNetworkReply ::错误信号

Bev*_*ins 7 qt qt5

我正在为Qt5使用新的连接语法.QNetworkReply有一个叫做错误的信号,还有一个叫做错误的函数.尝试连接信号时会出现问题:

connect(reply, &QNetworkReply::error, this, &MyClass::error);
Run Code Online (Sandbox Code Playgroud)

错误C2664:'QMetaObject :: Connection QObject :: connect(const QObject*,const char*,const QObject*,const char*,Qt :: ConnectionType)':无法将参数2从'overloaded-function'转换为'const char*'上下文不允许消除重载函数的歧义

如何告诉编译器(MSVC)我想连接信号而不是函数?

Nem*_*ric 16

您需要手动转换函数指针以解决正确的函数:

connect(reply, static_cast<void (QNetworkReply::*)(QNetworkReply::NetworkError)>(&QNetworkReply::error), this, &MyClass::error);
Run Code Online (Sandbox Code Playgroud)

这是为重载函数使用新语法的注意结果:

缺点:

在重载的情况下语法非常复杂?

PS你可以在上面的链接上找到类似的例子:

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