所以我有 data.txt 这样的数据:
ListElement{ longitude: "0"; latitude: "0"; height: "-700.114"; }
ListElement{ longitude: "0"; latitude: "1"; height: "-698.214"; }
ListElement{ longitude: "0"; latitude: "2"; height: "-695.955"; }
ListElement{ longitude: "0"; latitude: "3"; height: "-706.116"; }
[...]
我需要将此数据添加到 Data.qml ,就像那样
import QtQuick 2.1
Item {
property alias model: dataModel
//! [0]
ListModel{
id: dataModel
ListElement{ longitude: "0"; latitude: "0"; height: "-700.114"; }
ListElement{ longitude: "0"; latitude: "1"; height: "-698.214"; }
ListElement{ longitude: "0"; latitude: "2"; height: "-695.955"; }
ListElement{ longitude: "0"; latitude: "3"; height: "-706.116"; }
[...]
}
}
怎么做?
答案 0 :(得分:1)
作为介绍,通常首选保持数据格式的通用性,而不是QML代码。 QML适用于GUI,如果您希望保持代码的通用性和可维护性,则避免混合应用程序逻辑和GUI代码非常重要。您可以使用JSON格式,并从C ++加载它,或者如果您仍然从QML加载它,您可以直接使用JSON.parse
javascript函数。
话虽这么说,你可以将你的QML模型放在一个单独的.qml文件中,例如:
DataModel.qml
ListModel {
ListElement{ longitude: "0"; latitude: "0"; height: "-700.114"; }
ListElement{ longitude: "0"; latitude: "1"; height: "-698.214"; }
ListElement{ longitude: "0"; latitude: "2"; height: "-695.955"; }
ListElement{ longitude: "0"; latitude: "3"; height: "-706.116"; }
}
然后使用Qt.createComponent()
方法创建一个组件,然后使用该方法使用该对象:
function loadModel() {
// Create the component
var component = Qt.createComponent("DataModel.qml");
if (component.status == Component.Ready) {
// Instantiate the object given a parent
var model = component.createObject(qmlParentId);
// Assign the newly created object to your property
root.model = model
}
}
加载后,您的模型将可用。