所以我试图在一个动态创建ListElements ListModel.这工作正常,直到我尝试在ListElements中编写一些动态加载的内容.
我尝试使用ListElement内部和小时作为属性创建一个自己的文件,但模型然后我得到一个错误,说ListElements不能嵌套.
运行以下代码的错误是:
无法分配给不存在的属性"小时"
我怎么解决这个问题?
码:
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;
}
}
Run Code Online (Sandbox Code Playgroud)
编辑: 将函数中的代码行更改为:
var object = Qt.createQmlObject('import QtQuick 2.0; ListElement { property string hour: "23" }', parent);
Run Code Online (Sandbox Code Playgroud)
现在我没有错误,但元素仍未显示在列表中.
解:
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;
}
}
Run Code Online (Sandbox Code Playgroud)
Mit*_*tch 12
我不确定为什么这不起作用,但使用普通的旧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"
};
}
}
}
Run Code Online (Sandbox Code Playgroud)