2

QML WebView を使用してローカル ページ (WebOS アプリ) を開こうとしています

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")
        }
    }
}

このように 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 コンソールを有効にして、何が失敗したかを表示してください。

ありがとう

マルシン

4

1 に答える 1

1

ほとんどのWebView::onLoadFailed場合、ネットワークエラー(到達不能または無効なURLなど)で呼び出されます。

実行できるのは、NetworkAccessManagerのfinished信号をリッスンして、ネットワーク応答のエラーをチェックすることです。

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

loggerスロット付きのQObjectはどこにありますかonNetworkRequestFinished

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

詳細については、QNetworkReply ドキュメントを参照してください。

于 2012-09-26T23:28:09.240 に答える