2015-03-23 26 views
29

Yüklemelerini Karşıdan Yükleme Şu anda QtWebkit'dan QWebEngine ürününe geçiş yapmaktayız. Ancak, indirme işlemlerinin yapılması biraz baş ağrısına neden oluyor. Daha önce bu yüzden gibi QWebPage::unsupportedContent sinyal kullanılarak işlenir:QtWebEngine

QWebPage* webPage = new QWebPage(this); 

QObject::connect(webPage, &QWebPage::unsupportedContent, [] (QNetworkReply* reply) { 
    // do stuff with the reply 
    reply->readAll(); 
}); 

QtWebEngine kullanarak, aklıma gelen tek şey sunucuya bir istek yapmak QWebEngineView::urlChanged sinyalini kullanmaktır ve ben bile emin değilim eğer işe yarayacaksa.

QNetworkAccessManager* accessManager = new QNetworkAccessManager(this); 
QWebEngineView* webView = new QWebEngineView(this); 

QObject::connect(webView, &QWebEngineView::urlChanged, [=] (const QUrl& url) { 
    if (url.path().endsWith("some_endpoint_which_results_in_a_download") { 
     QNetworkReply* reply = accessManager->get(url); 
     // do the same stuff to the reply 
     reply->readAll(); 
    } 
}) 

Açıkçası bu yaklaşım çok bir indirme neden bitiş noktaları uygulamasına kodlanmış olması gerekir ki sınırlamaktadır. Ancak daha iyi bir çözüm göremiyorum. Kimse daha iyi bir şeyle geldi mi?

- Güncelleme -

web önbellek ve çerezler, aşağıdaki özelliğin üzerine geliştiricinin kontrolüne diğer geliştirmeler arasında QT'ın 5.5 Release plan hatları, Dokümanlar. dosyaların indirilmesini yönetmek için

Eklendi API

5,5 beta 09/04/2015 tarihinde serbest bırakılması ve 26/05/2015 tarihinde serbest bırakılması için son yöneliktir. Herhangi bir kafa travmasını önlemek için, bu gelişmeleri beklemek önemli olabilir.

Bunu söyledikten sonra, eğer biri varsa, benimkiden daha temiz bir çözümle ilgilenecektim.

+0

Benzer bir karar vermemiz gerekti ve göz kırpma entegrasyonu tamamlanana kadar webkit ile kalmayı tercih ettik. QNetworkManager üzerinden de eksik istek değişikliği ve henüz baskı yok. Örnek olarak, bu sorunun Qt 5.5 ile nasıl çözüleceği, [tarayıcı tarayıcı] 'ya (https://github.com/OtterBrowser/otter-browser/blob/master/src/modules/backends/web/qtwebengine/QtWebEngineWebWidget bakın. .cpp # L122) ve [Qt kaynakları] (http://code.qt.io/cgit/qt/qtwebengine.git/tree/src/webenginewidgets/api/qwebengineprofile.h#n106). – elsamuko

+0

@StickyCube Webengini nasıl başlattığınızı bana bildirir misiniz? Ben quicknanobrowser ./quicknanobrowser -platform wayland olarak kullanmaya çalışıyorum. Ancak, youtube videolarını oynatırken uygulama çöküyor. Herhangi bir öneriniz varsa lütfen bana gönderin. –

cevap

3

QtWebEngine, QWebEngineProfile sınıfı üzerinden downloadRequested sinyali ile indirme işlemlerini yönetir.