Динамическое создание элементов списка QML и содержимого



Поэтому я пытаюсь динамически создавать элементы списка в 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;
}
}


Редактировать:
Измените строку кода в функции на:



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


Теперь я не получаю ошибок, но элементы по-прежнему не отображаются в списке.



Решение:



import QtQuick 2.0

ListModel
{
id: listModel

Component.onCompleted:
{
for (var i = 0; i < 24; i++)
{
append( { hour: i.toString() } )
}
}
}
772   1  

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"
            };
        }
    }
}

Comments

    Ничего не найдено.