V
15 апреля 2020 г. 13:57

Менеджер загрузок с помощью QWebEngine

QWebEngineDownloadItem, QWebEngenePage, QWebEngineProfile, QWebEngineDownloadItem::CompleteHtmlSaveFormat, QWebEngineProfile::downloadRequested()

Всем привет)
Имеется такой слот:

  1. void MyClass::downloadRequested(QWebEngineDownloadItem *download)
  2. {
  3. Q_ASSERT(download && download->state() == QWebEngineDownloadItem::DownloadRequested);
  4.  
  5. //Сохраняет страницу в указанную дирректорию
  6. download->setSavePageFormat(QWebEngineDownloadItem::CompleteHtmlSaveFormat);
  7. download->setPath(download->path());
  8. download->accept();
  9.  
  10. return;
  11. }

Он вызывается по сигналу:

  1. QWebEnginePage *page = new QWebEnginePage;
  2. connect(page->profile(), &QWebEngineProfile::downloadRequested, this, &MyClass::downloadRequested);

Сигнал испускается при вызове метода QWebEnginePage::download():

  1. page->download(currentUrl, saveName);

Слот MyClass::downloadRequested сделал как в примере Simple Browser, но в примере конструкция QWebEngineDownloadItem::CompleteHtmlSaveFormat говорит программе сохранить страницу полностью, вместе со всеми ресурсами, и это работает, а моя программа сохраняет только html, не зависимо от того, какой тип формата сохранения я укажу
Подскажите пожалуста чего у меня не хватает?

2

Вам это нравится? Поделитесь в социальных сетях!

2
Evgenii Legotckoi
  • 17 апреля 2020 г. 14:38

Добрый день.
Я не уверен, но может быть дело в дополнительных настройках, которые вы могли пропустить.
Например, в том проекте в main.cpp есть такой код

  1. QWebEngineSettings::defaultSettings()->setAttribute(QWebEngineSettings::PluginsEnabled, true);
  2. QWebEngineSettings::defaultSettings()->setAttribute(QWebEngineSettings::DnsPrefetchEnabled, true);
  3. QWebEngineProfile::defaultProfile()->setUseForGlobalCertificateVerification();
    V
    • 19 апреля 2020 г. 10:24

    Добрый день)
    добавил перед connect:

    1. QWebEngineSettings::defaultSettings()->setAttribute(QWebEngineSettings::PluginsEnabled, true);
    2. QWebEngineSettings::defaultSettings()->setAttribute(QWebEngineSettings::DnsPrefetchEnabled, true);
    3. QWebEngineProfile::defaultProfile()->setUseForGlobalCertificateVerification();

    А сам connect изменил:

    1. connect(QWebEngineProfile::defaultProfile(), &QWebEngineProfile::downloadRequested, this, &MyClass::downloadRequested);

    Но ни чего не изменилось(

      Комментарии

      Только авторизованные пользователи могут публиковать комментарии.
      Пожалуйста, авторизуйтесь или зарегистрируйтесь
      • Последние комментарии
      • Evgenii Legotckoi
        16 апреля 2025 г. 17:08
        Благодарю за отзыв. И вам желаю всяческих успехов!
      • IscanderChe
        12 апреля 2025 г. 17:12
        Добрый день. Спасибо Вам за этот проект и отдельно за ответы на форуме, которые мне очень помогли в некоммерческих пет-проектах. Профессиональным программистом я так и не стал, но узнал мно…
      • AK
        1 апреля 2025 г. 11:41
        Добрый день. В данный момент работаю над проектом, где необходимо выводить звук из программы в определенное аудиоустройство (колонки, наушники, виртуальный кабель и т.д). Пишу на Qt5.12.12 поско…
      • Evgenii Legotckoi
        9 марта 2025 г. 21:02
        К сожалению, я этого подсказать не могу, поскольку у меня нет необходимости в обходе блокировок и т.д. Поэтому я и не задавался решением этой проблемы. Ну выглядит так, что вам действитель…
      • VP
        9 марта 2025 г. 16:14
        Здравствуйте! Я устанавливал Qt6 из исходников а также Qt Creator по отдельности. Все компоненты, связанные с разработкой для Android, установлены. Кроме одного... Когда пытаюсь скомпилиров…