2012-09-26 80 views
2

我嘗試使用QML的WebView如何找出爲什麼QML的WebView頁面加載失敗

import QtQuick 1.1 
import QtWebKit 1.0 
import com.nokia.meego 1.0 

Page 
{ 
    id: mainPage 
    Flickable 
    { 
     id: appFlickable 
     anchors.fill: parent 
     clip: true 

     contentHeight: appView.height 
     contentWidth: appView.width 

     WebView 
     { 
      id: appView 
      preferredHeight: parent.height 
      preferredWidth: parent.width 
      url: appUrl 
      settings.javascriptCanOpenWindows: true 
      settings.javascriptEnabled: true 
      settings.autoLoadImages: true 
      settings.javascriptCanAccessClipboard: true 
      settings.developerExtrasEnabled: true 
      onLoadFailed: console.log("load failed") 
      onLoadFinished: console.log("load finished") 
     } 
    } 
} 

打開本地頁面(WebOS的應用程序),我這種方式加載它在main.cpp中:

int main(int argc, char *argv[]) 
{ 
    QApplication app(argc, argv); 
    QDeclarativeView view; 
    view.rootContext()->setContextProperty("appUrl", argv[1]); 
    view.setSource(QUrl("qrc:/qml/main.qml")); 
    view.showFullScreen(); 
    return app.exec(); 
} 

我總是得到一個負載失敗。有什麼辦法可以找出問題,啓用一些Web控制檯來告訴我什麼失敗。

感謝

馬辛

回答

1

最有可能WebView::onLoadFailed呼籲網絡錯誤(可達或不合法的URL等)。

你可以嘗試做的是收聽NetworkAccessManager的finished信號以檢查網絡回覆是否有錯誤。

connect (viewer.engine()->networkAccessManager(), SIGNAL(finished(QNetworkReply*)), 
     logger, SLOT(onNetworkRequestFinished(QNetworkReply*))); 

其中logger是一個帶有onNetworkRequestFinished插槽的QObject。

void Logger::onNetworkRequestFinished(QNetworkReply* reply) 
{ 
    if (reply->error() != QNetworkReply::NoError) { 
     qDebug() << "network error:" << reply->errorString(); 
    } 
    reply->deleteLater(); 
} 

有關詳細信息,請參閱QNetworkReplydocumentation