我正在从 Web 服务加载 JSON,QNetworkRequest
然后将其放入JsonDataAccess
对象中。我可以解析 JSON,一切都很好。
但是我想将 JSON 字符串格式化为 HTML 并将其显示在一个 WebView 中,这似乎不适用于finished(QNetworkReply*)
信号使用的线程,因为它应该是非 UI 阻塞的。
MapView
但是,我可以使用相同的方法向 a 添加标记。但是更新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
}
}