Михаиллл
26 июля 2019 г. 14:16

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

Webview

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

2

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

5
Михаиллл
  • 26 июля 2019 г. 16:57

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

    Evgenii Legotckoi
    • 26 июля 2019 г. 18:50
    • (ред.)

    Добрый день, текущая страница у 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, статьи есть на сайте по скачиванию файлов, в то числе и больших.

      Михаиллл
      • 26 июля 2019 г. 20:04

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

        Михаиллл
        • 30 июля 2019 г. 14:40

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

        qwebview_p.h qwebview_p.h

          Evgenii Legotckoi
          • 30 июля 2019 г. 14:43

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

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

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

            Комментарии

            Только авторизованные пользователи могут публиковать комментарии.
            Пожалуйста, авторизуйтесь или зарегистрируйтесь