簡體   English   中英

動態創建QML ListElement和內容

[英]Dynamically create QML ListElement and content

所以我試圖在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);

現在我沒有錯誤,但元素仍未顯示在列表中。

我不確定為什么這不起作用,但使用普通的舊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"
            };
        }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM