【问题标题】:Dynamically create QML ListElement and content动态创建 QML ListElement 和内容
【发布时间】:2015-01-12 12:56:40
【问题描述】:

所以我试图在ListModel 中动态创建 ListElements。在我尝试在要动态加载的 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;
    }
}

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

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

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

【问题讨论】:

    标签: qt qml


    【解决方案1】:

    我不确定为什么这不起作用,但使用普通的旧 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"
                };
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2021-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多