0

を使用して Web サービスから JSON をロードし、QNetworkRequestそれをオブジェクトに入れていJsonDataAccessます。JSON を解析でき、すべて問題ありません。

finished(QNetworkReply*)しかし、JSON 文字列を HTML にフォーマットし、非 UI ブロッキングであるはずなので、シグナルが使用するスレッドからは機能しないように見える WebView に表示したいと考えています。

ただし、MapViewまったく同じ方法で にマーカーを追加できます。しかし、更新はWebView機能しません。メインスレッドにアクセスして WebView を更新するにはどうすればよいですか?

現在使用している方法(スロット)は次のとおりです。

void ApplicationUI::onLoadJsonFinished(QNetworkReply* reply) {

    JsonDataAccess jda;
    jsonData = jda.load(reply);

    qDebug() << "Received JSON data: " << jsonData;

    QVariant result = jsonData.value<QVariantMap>();
    QString addressTitle = result.toMap().value("address").toMap().value("title").toString();

QObject* webViewAsQObject = root->findChild<QObject*>(
        QString("imprintWebViewObj"));
if (webViewAsQObject) {
    WebView* webView = qobject_cast<bb::cascades::WebView*>(
            webViewAsQObject);

    QString html = QString("<h1>foo</h1>");
    qDebug() << "Loading html into webview: " << html;
    webView->setHtml(html);
}
}

そして、これはqmlファイルです:

import bb.cascades 1.2

Page {
    Container {
        layout: DockLayout {
        }
        Container {

            Container {
                leftPadding: 20
                topPadding: 30
                bottomPadding: 30
                Label {
                    text: "Impressum"
                    textStyle.fontFamily: "Georgia"
                    textStyle.fontSize: FontSize.Large
                }

                ScrollView {
                    Container {
                        background: Color.create("#f8f8f8")
                        layout: StackLayout {
                            orientation: LayoutOrientation.TopToBottom
                        }
                        WebView {
                            id: imprintWebView
                            objectName: "imprintWebViewObj"   
                        }

                    }

                }

            }

        } // Container Content end


    }

}
4

1 に答える 1