を使用して 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
}
}