我可以使用JavaScript从我的qt应用程序中的服务器获取JSON数据吗?

时间:2014-08-13 04:52:07

标签: qt qml

我需要获取JSON数据并将其加载到表中。我想我需要一些C ++技能。但我可以用普通的JavaScript做这个或者可能是QML吗?

3 个答案:

答案 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。请查看以下答案以获取示例:

How to create/read/write JSon files in Qt5