Я хочу использовать стиль qt5 этого вызова подключения в старом стиле:
connect(socket, SIGNAL(error(QAbstractSocket::SocketError)), this,
SLOT(erreurSocket(QAbstractSocket::SocketError)));
Я старался
connect(socket, &QTcpSocket::error, this, &FenClient::erreurSocket);
безуспешно:
candidate function not viable: no overload of 'error' matching 'const char*' for 2nd argument
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);
Согласно документы:
Note: Signal error is overloaded in this class. To connect to this signal by using the function pointer syntax, Qt provides a convenient helper for obtaining the function pointer as shown in this example:
connect(abstractSocket, QOverload<QAbstractSocket::SocketError>::of(&QAbstractSocket::error), [=](QAbstractSocket::SocketError socketError){ /* ... */ });
Итак, в вашем случае решение:
connect(socket, QOverload<QAbstractSocket::SocketError>::of(&QAbstractSocket::error), this, &FenClient::erreurSocket);
Кроме того, QOverload был добавлен в Qt 5.7. Более ранние версии Qt 5 нуждаются в static_cast, как показано здесь, для выбора между перегруженными сигналами/слотами.