我想使用此老式connect调用的qt5样式:
connect(socket, SIGNAL(error(QAbstractSocket::SocketError)), this,
SLOT(erreurSocket(QAbstractSocket::SocketError)));
我尝试了
connect(socket, &QTcpSocket::error, this, &FenClient::erreurSocket);
未成功:
候选函数不可行:第二个参数的匹配“ const char *”的“错误”没有重载
FenClient.cpp
FenClient::FenClient()
{
setupUi(this);
socket = new QTcpSocket(this);
connect(socket, &QTcpSocket::error, this, &FenClient::erreurSocket);
FenClient.h
private slots:
void erreurSocket(QAbstractSocket::SocketError erreur);
答案 0 :(得分:2)
根据docs:
注意:此类中信号错误超载。连接到此 通过使用函数指针语法发出信号,Qt提供了一个方便的方法 如以下示例所示,用于获取函数指针的帮助器:
connect(abstractSocket, QOverload<QAbstractSocket::SocketError>::of(&QAbstractSocket::error), [=](QAbstractSocket::SocketError socketError){ /* ... */ });
因此,您的解决方案是:
connect(socket, QOverload<QAbstractSocket::SocketError>::of(&QAbstractSocket::error), this, &FenClient::erreurSocket);