Динамическое создание элементов списка 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() } )
}
}
}
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