2013-04-29 3 views
3

загрузить консоль возвращает следующую ошибку:Ошибка загрузки

Frame load interrupted by policy change

Пример:

<a href="app.exe">Start Download</a> 

Console Preview: enter image description here

Должен ли я настроить что-то в Компилятор или QWebSettings?

+0

Возможно расширение "EXE" является источником этой аллергии. Исполняемые файлы, как правило, блокируются от прямой загрузки, чтобы избежать вредоносного кода. Это может объяснить слово «политика». – Ihsan

+0

Работы по загрузке (я использую unsupportedContent (QNetworkReply *) и setForwardUnsupportedContent (true)), проблема на самом деле - странное сообщение. Интересно, что это за сообщение/ошибка. Не могли бы вы рассказать мне, почему он появляется? Когда я загружаюсь, должен отображаться отмененный и не сбой (как это происходит в обычных браузерах). Должен ли я использовать функцию «edit/rewrite» 'unsupportedContent' с помощью' QWebView-> setPage (new myClassPageRewrite()) '? –

ответ

2

Я обнаружил. В обычных браузерах Webkit место для загрузки консоли показывает, как отменяется запрос, поэтому перед тем, как перейти к «диспетчеру загрузки» браузера, запрос должен быть отменен.

решение:

//replace [QWebView] by your WebView 
connect([QWebView]->page(), SIGNAL(unsupportedContent(QNetworkReply*)), 
this, SLOT(downloadContent(QNetworkReply*))); 

... 

void [main class]::downloadContent(QNetworkReply *reply){ 
    //Replace "[main class]" by "Class" having the signs used in WebView. 

    [QWebView]->stop(); 
    //solution: stop loading --replace [QWebView] by your WebView 

    /*function to donwload*/ 
} 
1

Редактировать: трудно сказать без надлежащего обратного хода, который я запросил в комментариях, но похоже, что предупреждение может быть действительно безвредным.

Оригинал: Это потому, что QWebViewdoesn't know что делать с файлом app.exe - это не HTML страницы или text/plain документ или поддерживаемый образ, в конце концов. Класс QWebView не является веб-браузером; вы, очевидно, хотите начать загрузку некоторого файла, но в этом классе нет полноценного менеджера загрузки. Вам нужно будет предоставить свой собственный код для этого - код должен будет запросить правильное место для его сохранения и т. Д.

Вы можете начать с QWebPage::setLinkDelegationPolicy и обработать этот конкретный клик самостоятельно.

+0

Спасибо за ответ, но мой код загружается нормально. Я не использовал 'QWebPage :: setLinkDelegationPolicy'. Я использовал 'connect (QWebPage, SIGNAL (unsupportedContent (QNetworkReply *)), это, SLOT (signalDownload (QNetworkReply *)));' и 'setForwardUnsupportedContent (true)', загрузка отлично работает с ним. Единственная проблема - это сообщение «политика», которое странно (я не понимаю, почему эта политика или что это такое). Если вы можете отредактировать свой ответ, я был бы благодарен. Добрый день. –

+0

Я могу установить 'setLinkDelegationPolicy' только для' mimetypes' непризнанных? И распознанные миметики продолжают нормально функционировать (стандартный режим)? –

+0

Хорошо, я проверил источник qtwebkit, и похоже, что предупреждение печатается даже в довольно безобидных случаях. Было бы интересно увидеть обратную трассировку этой ошибки - '' WebCore :: MainResourceLoader :: stopLoadingForPolicyChange() '' как функция для установки точки останова. Как выглядит трассировка стека? –

 Смежные вопросы

  • Нет связанных вопросов^_^