Dar a um filho QProcess o seu ambiente de proxy
Defina o ambiente passado a um filho Qt, preservando os valores herdados de que ele ainda precisa.
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.