O Qt Network consegue negociar SOCKS5 diretamente para um socket TCP. Numa aplicação Qt existente, configure o socket antes de ligar:

QNetworkProxy proxy(
    QNetworkProxy::Socks5Proxy,
    "proxy.example.net",
    1080
);

socket.setProxy(proxy);
socket.connectToHost("service.example.net", 12345);

socket é um QTcpSocket existente. O destino e a porta do exemplo representam o serviço TCP da aplicação. O Qt chega primeiro ao proxy e depois pede-lhe que ligue a esse destino. Para um serviço TCP publicamente acessível onde é permitido um intermediário público, a lista de proxies SOCKS5 fornece candidatos para este exemplo sem conta de proxy. Confirme que o candidato permite o anfitrião e a porta reais do serviço.

Os sinais assíncronos normais do socket continuam a aplicar-se: aguarde connected() antes de trocar dados da aplicação e trate errorOccurred(). Mantenha o objeto socket vivo enquanto a ligação estiver em uso. Para código bloqueante, use antes os métodos de espera documentados do Qt com um tempo limite deliberado.

Isto requer o Qt Network, não uma GUI baseada em widgets. A definição explícita pertence a este socket. Outros sockets podem manter as predefinições da aplicação ou escolher outro proxy. Para tornar este socket direto, defina o seu tipo de proxy como QNetworkProxy::NoProxy antes de ligar.

Artigos relacionados