Dla pobierającego uruchamianego przez QProcess zbuduj środowisko procesu potomnego przed jego startem:

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/"});

Ten fragment Qt zakłada istniejący obiekt nadrzędny, pętlę zdarzeń i curl dostępny dla procesu potomnego. Utrzymuj QProcess przy życiu, gdy działa, i obsługuj jego sygnały zakończenia oraz błędu w aplikacji. Do tego sprawdzenia publicznej witryny bez skonfigurowanych poświadczeń proxy listy proxy HTTP oferuje kandydackie punkty końcowe HTTP dla wartości proxy procesu potomnego.

Rozpoczęcie od systemEnvironment zachowuje odziedziczone wartości, takie jak PATH. Zbudowanie w przeciwnym razie pustego środowiska i dodanie jednej zmiennej proxy pominęłoby te pozostałe wpisy.

Nazwa zmiennej jest kluczem. export to polecenie powłoki, nie jest częścią tego klucza ani plikiem wykonywalnym, który QProcess musiałby uruchomić najpierw. Przekazanie środowiska bezpośrednio pozwala też uniknąć budowania polecenia powłoki wokół adresu URL.

setProcessEnvironment dotyczy procesu uruchomionego później. Nie zmienia środowiska już działającego procesu potomnego ani powłoki, która uruchomiła aplikację Qt.

Wybrany pobierający musi rozumieć tę zmienną. Ten przykład używa małych liter https_proxy dla żądania HTTPS curl i zachowuje odziedziczone dane wejściowe obejścia. Inny program potomny może mieć inny interfejs proxy.

Powiązane artykuły