关于qt:动态创建QML ListElement和内容

Dynamically create QML ListElement and content

因此,我尝试在ListModel中动态创建ListElements。在我尝试在ListElements中编写一些要动态加载的内容之前,此方法可以正常工作。

我尝试制作一个以ListElement为单位并以小时为属性的自己的文件,但是该模型随后出现一个错误,提示不能嵌套ListElements。

运行以下代码的错误是:

Cannot assign to non-existent property"hour"

我该如何解决?

代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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;
    }
}

编辑:
将函数中的代码行更改为:

1
var object = Qt.createQmlObject('import QtQuick 2.0; ListElement { property string hour:"23" }', parent);

现在我没有收到任何错误,但是元素仍然没有显示在列表中。


我不确定为什么这行不通,但是使用普通的旧JavaScript对象就可以了:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
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"
            };
        }
    }
}