Voor een downloader die via QProcess wordt gestart, bouwt u de omgeving van het kind op vóór de start:

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

Dit Qt-fragment veronderstelt een bestaand ouderobject, een gebeurtenislus en curl die voor het kind beschikbaar is. Houd de QProcess in leven terwijl hij draait, en behandel zijn voltooiings- en foutsignalen in de toepassing. Voor deze controle van een openbare site zonder geconfigureerde proxyreferenties biedt de lijst met HTTP-proxy’s kandidaat-HTTP-eindpunten voor de proxywaarde van het kind.

Beginnen met systemEnvironment behoudt geërfde waarden zoals PATH. Een verder lege omgeving opbouwen en één proxyvariabele toevoegen zou die andere vermeldingen weglaten.

De naam van de variabele is de sleutel. export is een shellopdracht, geen deel van die sleutel en geen uitvoerbaar bestand dat QProcess eerst moet starten. De omgeving rechtstreeks doorgeven vermijdt ook een shellopdracht rond de URL te bouwen.

setProcessEnvironment geldt voor het proces dat daarna wordt gestart. Het verandert de omgeving van een al draaiend kind niet, en ook niet die van de shell die de Qt-toepassing startte.

De gekozen downloader moet de variabele begrijpen. Dit voorbeeld gebruikt kleine letters in https_proxy voor curl's HTTPS-verzoek en behoudt geërfde bypass-invoer. Een ander kindprogramma kan een andere proxy-interface hebben.

Gerelateerde artikelen