QProcess alt sürecine kendi proxy ortamını verin
Tek bir Qt alt sürecine aktarılan ortamı, hâlâ ihtiyaç duyduğu devralınan değerleri koruyarak ayarlayın.
QProcess üzerinden başlatılan bir indirici için alt sürecin ortamını başlatmadan önce oluşturun:
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/"});Bu Qt parçası var olan bir üst nesne, olay döngüsü ve alt süreç için erişilebilir curl varsayar. Çalışırken QProcess'i canlı tutun ve tamamlanma ile hata sinyallerini uygulamada işleyin. Proxy kimlik bilgileri yapılandırılmadan yapılan bu genel site denetimi için HTTP proxy listesinden alt sürecin proxy değeri için aday HTTP uç noktaları sunulur.
systemEnvironment ile başlamak PATH gibi devralınan değerleri korur. Aksi hâlde boş bir ortam kurup tek bir proxy değişkeni eklemek diğer girdileri dışarıda bırakırdı.
Anahtar, değişkenin adıdır. export bir shell komutudur, o anahtarın parçası değildir ve QProcess'in önce çalıştırması gereken bir yürütülebilir dosya da değildir. Ortamı doğrudan geçirmek, URL çevresinde bir shell komutu kurmaktan da kaçınır.
setProcessEnvironment sonradan başlatılan süreç için geçerlidir. Zaten çalışan bir alt sürecin veya Qt uygulamasını başlatan shell'in ortamını değiştirmez.
Seçilen indirici bu değişkeni anlamalıdır. Bu örnek curl'ün HTTPS isteği için küçük harfli https_proxy kullanır ve devralınan atlama girdilerini korur. Başka bir alt programın başka bir proxy arayüzü olabilir.