Использование 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());