QTcpSocket создается в основном потоке! Не подходит для многопоточных приложений или использовать socket->moveToThread(this), но в описании есть The object cannot be moved if it has a parent. Так что…
socket->setSocketDescriptor(socketDescriptor);
d_func()->pendingConnections.append(socket);
Удаляется в QTcpSocket *QTcpServer::nextPendingConnection()
Если это не основной поток, для того чтобы поток не успел разрушиться, потому что для завершения работы QTcpSocket нужна его очередь сообщений Также так как QTcpSocket tcpSocket указан не как указатель, то он просто быстро разрушается, при выходе из функции