Использование QPointer и QObject::connect с C++11

Я использую Qt 5.4 и пытаюсь возобновить прием новых подключений, когда сигнал "отключен" от моего QTcpSocket испускается Поэтому я написал следующее в.h и.cpp файле соответственно:

QPointer<QTcpServer> tcpServer; // in .h file

connect(tcpSocket, &QAbstractSocket::disconnected, [=](){
        tcpServer->resumeAccepting(); // in .cpp file
    });

Как видите, я использую QPointer класс для tcpSocket, С помощью приведенных выше кодов я не могу собрать свою программу и получить ошибку "нет подходящей функции для вызова...", хотя у меня нет проблем в случае определения tcpSocket без QPointer,

Как мне решить эту проблему?

1 ответ

Решение

Было бы разумнее сделать прямое соединение.

 connect(tcpSocket, &QAbstractSocket::disconnected, 
         tcpServer, &QTcpServer::resumeAccepting);

Обратите внимание, что для nextPendingConnection родительский элемент имеет значение QTcpServer так что вы также можете получить доступ к серверу:

 auto tcpServer = qobject_cast<QTcpServer *>(sender()->parent());
Другие вопросы по тегам