Проверьте пример Web Demo Browser, в который входит пример с Менеджером загрузки.
Если вы используете по умолчанию QWebEngineProfile, попробуйте:
connect(QWebEngineProfile::defaultProfile(), SIGNAL(downloadRequested(QWebEngineDownloadItem*)),
this, SLOT(downloadRequested(QWebEngineDownloadItem*)));
Для профиля, определенного в пользовательской QWebEnginePage, попробуйте:
connect(webView->page()->profile(), SIGNAL(downloadRequested(QWebEngineDownloadItem*)),
this, SLOT(downloadRequested(QWebEngineDownloadItem*)));
Теперь обработаем вашу загрузку, чтобы начать:
void MainWindow::downloadRequested(QWebEngineDownloadItem* download) {
if (download->savePageFormat() != QWebEngineDownloadItem::UnknownSaveFormat) {
qDebug() << "Format: " << download->savePageFormat();
qDebug() << "Path: " << download->path();
// If you want to modify something like the default path or the format
download->setSavePageFormat(...);
download->setPath(...);
// Check your url to accept/reject the download
download->accept();
}
}
Если вы хотите показать диалог прогресса с downlo ход рекламы, просто используйте сигналы, доступные в классе QWebEngineDownloadItem
:
connect(download, SIGNAL(downloadProgress(qint64, qint64)), this, SLOT(setCurrentProgress(qint64, qint64)));
По какой-то причине это не работает для меня. Я нажимаю кнопку загрузки, и ничего не происходит. Он даже ничего не показывает в консоли отладки –
Я портирую с QWebKit на QWebEngine. И был сигнал под названием linkClicked. В WebEngine такого сигнала нет. Может быть, это и есть причина? –
Код работает для меня в Qt 5.7. Если вы хотите обрабатывать каждый URL, проверьте мой ответ в этом сообщении: http://stackoverflow.com/questions/38343790/how-to-use-qwebengineurlrequestinterceptor/38351234#38351234 – mohabouje