我需要获取JSON数据并将其加载到表中。我想我需要一些C ++技能。但我可以用普通的JavaScript做这个或者可能是QML吗?
答案 0 :(得分:21)
是的,你可以在QML中纯粹使用javascript API。以下代码适用于Qt 5.3.1
import QtQuick 2.0
import QtQuick.Controls 1.2
Item {
width: 300
height: 400
ListModel {
id: model
}
ListView {
id: listview
anchors.fill: parent
model: model
delegate: Text {
text: listdata
}
}
function getData() {
var xmlhttp = new XMLHttpRequest();
var url = "http://www.w3schools.com/website/Customers_MYSQL.php";
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState == XMLHttpRequest.DONE && xmlhttp.status == 200) {
myFunction(xmlhttp.responseText);
}
}
xmlhttp.open("GET", url, true);
xmlhttp.send();
}
function myFunction(response) {
var arr = JSON.parse(response);
for(var i = 0; i < arr.length; i++) {
listview.model.append( {listdata: arr[i].Name +" "+ arr[i].City +" "+ arr[i].Country })
}
}
Button {
anchors.bottom: parent.bottom
width: parent.width
text: "Get Data"
onClicked: getData()
}
}
答案 1 :(得分:3)
如果将纯QML JSONListModel添加到项目中,则可以使用View-Model模式的全部功能。但是,它不支持在完全下载数据之前显示数据。
答案 2 :(得分:-1)
您可以在C ++中轻松完成,因为Qt5本身支持JSON。请查看以下答案以获取示例: