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视频时,应用程序正在崩溃。如果你有任何建议,请发邮件给我。