C++ 在QtWebEngine中处理下载
我们目前正在将一个项目从C++ 在QtWebEngine中处理下载,c++,qt,qt5.4,qtwebengine,C++,Qt,Qt5.4,Qtwebengine,我们目前正在将一个项目从QtWebkit迁移到QWebEngine。然而,处理下载会让人有点头疼。之前,我们使用QWebPage::unsupportedContent信号处理此问题,如下所示: QWebPage* webPage = new QWebPage(this); QObject::connect(webPage, &QWebPage::unsupportedContent, [] (QNetworkReply* reply) { // do stuff with t
QtWebkit
迁移到QWebEngine
。然而,处理下载会让人有点头疼。之前,我们使用QWebPage::unsupportedContent
信号处理此问题,如下所示:
QWebPage* webPage = new QWebPage(this);
QObject::connect(webPage, &QWebPage::unsupportedContent, [] (QNetworkReply* reply) {
// do stuff with the reply
reply->readAll();
});
使用QtWebEngine
时,我唯一能想到的就是使用QWebEngineView::urlChanged
信号向服务器发出请求,我甚至不确定这是否有效
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();
}
})
显然,这种方法非常有限,因为导致下载的端点必须硬编码到应用程序中。然而,我看不到更好的解决办法。有人想出更好的办法吗
--更新--
Qt概述中的文档,以及开发人员对web缓存和cookie控制的其他改进,包括以下功能
添加了用于管理文件下载的API
5.5 beta版计划于2015年4月9日发布,最终版计划于2015年5月26日发布
为了防止进一步的头部创伤,等待这些改善可能是值得的
话虽如此,如果有人有比我更干净的解决方案,我仍然会感兴趣。QtWebEngine通过QWebEngineProfile类使用信号管理下载。我们不得不做出类似的决定,并选择继续使用webkit,直到blink集成完成。还缺少通过QNetworkManager进行的请求修改,尚未打印。例如,如何使用Qt5.5解决此问题,请查看和。@StickyCube。您能告诉我您是如何启动webengine的吗?我正在尝试将quicknanobrowser用作./quicknanobrowser-platform wayland。但是,当播放youtube视频时,应用程序正在崩溃。如果你有任何建议,请发邮件给我。