Para um downloader iniciado por QProcess, construa o ambiente do filho antes de o iniciar:

auto* download = new QProcess(parent);
QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
env.insert("https_proxy", "http://proxy.example:8080");
download->setProcessEnvironment(env);
download->start("curl", {"--head", "https://www.example.com/"});

Este trecho Qt pressupõe um objeto pai existente, um ciclo de eventos e curl disponível para o filho. Mantenha o QProcess vivo enquanto ele corre e trate os seus sinais de conclusão e de erro na aplicação. Para esta verificação de um site público sem credenciais de proxy configuradas, a lista de proxies HTTP oferece pontos finais HTTP candidatos para o valor de proxy do filho.

Começar com systemEnvironment preserva valores herdados como PATH. Construir um ambiente vazio e acrescentar uma única variável de proxy omitiria essas outras entradas.

O nome da variável é a chave. export é um comando de shell, não faz parte dessa chave nem é um executável que o QProcess deva lançar primeiro. Passar o ambiente diretamente também evita construir um comando de shell à volta do URL.

setProcessEnvironment aplica-se ao processo iniciado depois. Não altera o ambiente de um filho que já está a correr nem o da shell que lançou a aplicação Qt.

O downloader escolhido tem de compreender a variável. Este exemplo usa https_proxy em minúsculas para o pedido HTTPS do curl e preserva as entradas de substituição herdadas. Outro programa filho pode ter outra interface de proxy.

Artigos relacionados