所以我试图在ListModel
中动态创建ListElements。在我尝试在ListElements中编写一些要动态加载的内容之前,此方法效果很好。
我尝试使用ListElement
在一个小时内作为属性创建自己的文件,但是该模型随后出现一个错误,提示无法嵌套ListElements。
运行以下代码的错误是:
Cannot assign to non-existent property "hour"
我该如何解决?
代码:
import QtQuick 2.0
ListModel
{
id: listModel
Component.onCompleted:
{
for (var i = 0; i < 24; i++)
{
var object = createListElement(listModel)
}
}
function createListElement(parent)
{
var object = Qt.createQmlObject('import QtQuick 2.0; ListElement { hour: "01" }', parent);
return object;
}
}
编辑:
将函数中的代码行更改为:
var object = Qt.createQmlObject('import QtQuick 2.0; ListElement { property string hour: "23" }', parent);
现在,我没有收到任何错误,但是元素仍然没有显示在列表中。
最佳答案
我不确定为什么这行不通,但是使用普通的旧JavaScript对象就可以了:
import QtQuick 2.4
import QtQuick.Window 2.0
Window {
width: 400
height: 400
ListView {
id: listView
anchors.fill: parent
model: listModel
delegate: Rectangle {
width: listView.width
height: listView.height / 4
Text {
text: hour
anchors.centerIn: parent
}
}
}
ListModel {
id: listModel
Component.onCompleted: {
for (var i = 0; i < 24; i++) {
append(createListElement());
}
}
function createListElement() {
return {
hour: "01"
};
}
}
}
关于qt - 动态创建QML ListElement和内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27902535/