我正在为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)
| 归档时间: |
|
| 查看次数: |
2587 次 |
| 最近记录: |