Михаиллл
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 может высылать запросы на скачивание

    MainWindow::MainWindow(QWidget *parent) :
        QMainWindow(parent),
        ui(new Ui::MainWindow)
    {
        ui->setupUi(this);
    
        ui->webView->page()->setForwardUnsupportedContent(true);
        connect(ui->webView->page(),SIGNAL(downloadRequested(QNetworkRequest)),this,SLOT(download(QNetworkRequest)));
        connect(ui->webView->page(),SIGNAL(unsupportedContent(QNetworkReply*)),this,SLOT(unsupportedContent(QNetworkReply*)));
    }
    
    MainWindow::~MainWindow()
    {
        delete ui;
    }
    
    void MainWindow::download(const QNetworkRequest &request){
        // request.url() - это то, откуда вам нужно скачать файл или изображение
        qDebug()<<"Download Requested: "<<request.url();
    }
    
    void MainWindow::unsupportedContent(QNetworkReply * reply){
    
        qDebug()<<"Unsupported Content: "<<reply->url();
    
    }
    

    Дальше уже сможете использовать 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. Если вы не видите этот сигнал в конкретном классе, это не значит что его там нет совсем.

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

          #include "qabstractwebview_p.h"
          #include "qwebviewinterface_p.h"
          #include "qnativeviewcontroller_p.h"
          

            Comments

            Only authorized users can post comments.
            Please, Log in or Sign up
            • Last comments
            • AK
              April 24, 2025, 12:04 p.m.
              UPD: Переписал логику воспроизведения через стороннюю библиотеку BASS. Там выбрать можно
            • Evgenii Legotckoi
              April 16, 2025, 5:08 p.m.
              Благодарю за отзыв. И вам желаю всяческих успехов!
            • IscanderChe
              April 12, 2025, 5:12 p.m.
              Добрый день. Спасибо Вам за этот проект и отдельно за ответы на форуме, которые мне очень помогли в некоммерческих пет-проектах. Профессиональным программистом я так и не стал, но узнал мно…
            • AK
              April 1, 2025, 11:41 a.m.
              Добрый день. В данный момент работаю над проектом, где необходимо выводить звук из программы в определенное аудиоустройство (колонки, наушники, виртуальный кабель и т.д). Пишу на Qt5.12.12 поско…
            • Evgenii Legotckoi
              March 9, 2025, 9:02 p.m.
              К сожалению, я этого подсказать не могу, поскольку у меня нет необходимости в обходе блокировок и т.д. Поэтому я и не задавался решением этой проблемы. Ну выглядит так, что вам действитель…