Как преобразовать этот сигнал и слот в соединение qt5? - PullRequest
1 голос
/ 06 мая 2019

Я хочу использовать стиль 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);

1 Ответ

2 голосов
/ 06 мая 2019

Согласно документам :

Примечание: ошибка сигнала перегружена в этом классе. Чтобы подключиться к этому используя синтаксис указателя функции, Qt предоставляет удобный помощник для получения указателя на функцию, как показано в этом примере:

connect(abstractSocket, QOverload<QAbstractSocket::SocketError>::of(&QAbstractSocket::error),
    [=](QAbstractSocket::SocketError socketError){ /* ... */ });

Итак, в вашем случае решение:

connect(socket, QOverload<QAbstractSocket::SocketError>::of(&QAbstractSocket::error), this, &FenClient::erreurSocket);
...