Как использовать statusChanged в WebView (QtQuick 2.0 и QtWebKit 3)?



В QtQuick 1.0 и QtWebKit 1.0 я мог сделать onLoadFinished для выполнения функции после того, как страница была готова. Как это сделать в версиях 2 и 3 соответственно?



В docuements есть statusChanged. Я не понимаю, как им пользоваться.



Ранее у меня было:



import QtQuick 2.0
import QtWebKit 3.0

WebView {
width: 700
height: 800

url:"http://www.yahoo.com"
settings.developerExtrasEnabled : true


id: webView
objectName: "myWebView"




onLoadFinished: evaluateJavaScript("window.setTimeout('window.location.reload()',5000);")

}


Но это показывает ошибку:

Невозможно присвоить несуществующему свойству "onLoadFinished"

611   1  

1 ответ:

Для проверки точного состояния необходимо использовать объект onLoadingChanged signal и loadRequest: http://qt-project.org/doc/qt-5.0/qtwebkit/qml-qtwebkit3-webview.html#onLoadingChanged-signal

import QtQuick 2.0
import QtWebKit 3.0

WebView {
    width: 700
    height: 800

    url:"http://google.com"

    id: webView
    objectName: "myWebView"

    onLoadingChanged: {
        console.log("onLoadingChanged: status=" + loadRequest.status);
        if (loadRequest.status == WebView.LoadStartedStatus) 
            console.log("Loading started...");
        if (loadRequest.status == WebView.LoadFailedStatus) {
           console.log("Load failed! Error code: " + loadRequest.errorCode);
           if (loadRequest.errorCode === NetworkReply.OperationCanceledError)
               console.log("Load cancelled by user");
        } 
        if (loadRequest.status == WebView.LoadSucceededStatus) 
            console.log("Page loaded!");
    }

}

Сигнал onLoadingChanged появляется, когда начинается, заканчивается или завершается любая загрузка страницы. В loadRequest доступны различные параметры только для чтения:

  • url: расположение загружаемого ресурса.
  • состояние: отражает одно из трех состояний нагрузки: LoadStartedStatus, LoadSucceededStatus, или LoadFailedStatus. Смотрите WebView:: LoadStatus.
  • errorString: описание ошибки загрузки.
  • errorCode: код ошибки HTTP.
  • errorDomain: высокоуровневые типы ошибок, один из NetworkErrorDomain, HttpErrorDomain, InternalErrorDomain, DownloadErrorDomain или NoErrorDomain. См. WebView:: ErrorDomain.

Comments

    Ничего не найдено.