U stahovače spouštěného přes QProcess sestavte prostředí podřízeného procesu před jeho spuštěním:

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

Tento úryvek Qt předpokládá existující nadřazený objekt, smyčku událostí a curl dostupný pro podřízený proces. Udržujte QProcess živý, dokud běží, a v aplikaci ošetřete jeho signály dokončení a chyby. Pro tuto kontrolu veřejného webu bez nastavených proxy přihlašovacích údajů nabízí seznam HTTP proxy kandidátské HTTP koncové body pro hodnotu proxy podřízeného procesu.

Spuštění se systemEnvironment zachová zděděné hodnoty, jako je PATH. Sestavení jinak prázdného prostředí a přidání jedné proxy proměnné by tyto ostatní položky vynechalo.

Klíčem je název proměnné. export je příkaz shellu, není součástí tohoto klíče ani spustitelným souborem, který by QProcess musel nejprve spustit. Přímé předání prostředí se také vyhýbá sestavování příkazu shellu kolem URL.

setProcessEnvironment platí pro proces spuštěný poté. Nemění prostředí již běžícího podřízeného procesu ani shellu, který aplikaci Qt spustil.

Zvolený stahovač musí proměnné rozumět. Tento příklad používá malými písmeny https_proxy pro HTTPS požadavek curl a zachovává zděděné vstupy pro obcházení. Jiný podřízený program může mít jiné proxy rozhraní.

Související články