Михаиллл
July 26, 2019, 2:16 p.m.

Webview не загружает файлы

Webview

Добрый день.
Хочу скачать картинку, нажимаю скачать, но он просто открывает картинку как сайт. Как скачивать картинки?

2

Do you like it? Share on social networks!

5
Михаиллл
  • July 26, 2019, 4:57 p.m.

Файл можно скачать с помощью QNetworkAccessManager, но как определить сслыку для скачивания? Сем такая ссылка отличается от обычной?

    Evgenii Legotckoi
    • July 26, 2019, 6:50 p.m.
    • (edited)

    Добрый день, текущая страница у QWebView может высылать запросы на скачивание

    1. MainWindow::MainWindow(QWidget *parent) :
    2. QMainWindow(parent),
    3. ui(new Ui::MainWindow)
    4. {
    5. ui->setupUi(this);
    6.  
    7. ui->webView->page()->setForwardUnsupportedContent(true);
    8. connect(ui->webView->page(),SIGNAL(downloadRequested(QNetworkRequest)),this,SLOT(download(QNetworkRequest)));
    9. connect(ui->webView->page(),SIGNAL(unsupportedContent(QNetworkReply*)),this,SLOT(unsupportedContent(QNetworkReply*)));
    10. }
    11.  
    12. MainWindow::~MainWindow()
    13. {
    14. delete ui;
    15. }
    16.  
    17. void MainWindow::download(const QNetworkRequest &request){
    18. // request.url() - это то, откуда вам нужно скачать файл или изображение
    19. qDebug()<<"Download Requested: "<<request.url();
    20. }
    21.  
    22. void MainWindow::unsupportedContent(QNetworkReply * reply){
    23.  
    24. qDebug()<<"Unsupported Content: "<<reply->url();
    25.  
    26. }

    Дальше уже сможете использовать QNetworkAccessManager, статьи есть на сайте по скачиванию файлов, в то числе и больших.

      Михаиллл
      • July 26, 2019, 8:04 p.m.

      Спасибо. А как делать, если WebView используется в QML?

        Михаиллл
        • July 30, 2019, 2:40 p.m.

        Смотрю в хедер вебВью, но не вижу сигнала downloadRequested.
        Скажите пожалуйста, где он?

        qwebview_p.h qwebview_p.h

          Evgenii Legotckoi
          • July 30, 2019, 2:43 p.m.

          Если его там нет, значит может быть в заголовочных файлах базовых классов класса QWebView. Если вы не видите этот сигнал в конкретном классе, это не значит что его там нет совсем.

          Может быть и где-то здесь

          1. #include "qabstractwebview_p.h"
          2. #include "qwebviewinterface_p.h"
          3. #include "qnativeviewcontroller_p.h"

            Comments

            Only authorized users can post comments.
            Please, Log in or Sign up
            • Last comments
            • AK
              April 1, 2025, 11:41 a.m.
              Добрый день. В данный момент работаю над проектом, где необходимо выводить звук из программы в определенное аудиоустройство (колонки, наушники, виртуальный кабель и т.д). Пишу на Qt5.12.12 поско…
            • Evgenii Legotckoi
              March 9, 2025, 9:02 p.m.
              К сожалению, я этого подсказать не могу, поскольку у меня нет необходимости в обходе блокировок и т.д. Поэтому я и не задавался решением этой проблемы. Ну выглядит так, что вам действитель…
            • VP
              March 9, 2025, 4:14 p.m.
              Здравствуйте! Я устанавливал Qt6 из исходников а также Qt Creator по отдельности. Все компоненты, связанные с разработкой для Android, установлены. Кроме одного... Когда пытаюсь скомпилиров…
            • ИМ
              Nov. 22, 2024, 9:51 p.m.
              Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
            • Evgenii Legotckoi
              Oct. 31, 2024, 11:37 p.m.
              Добрый день. Да, можно. Либо через такие же плагины, либо с постобработкой через python библиотеку Beautiful Soup