动态创建 QML ListElement 和内容
Dynamically create QML ListElement and content
所以我试图在 ListModel
中动态创建 ListElements。这工作正常,直到我尝试在 ListElements 中写入一些内容以动态加载。
我尝试用 ListElement
在小时内制作自己的文件作为 属性,但是模型然后我得到一个错误,说 ListElements 不能嵌套。
下面代码 运行 的错误是:
Cannot assign to non-existent property "hour"
我该如何解决这个问题?
代码:
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"
};
}
}
}
所以我试图在 ListModel
中动态创建 ListElements。这工作正常,直到我尝试在 ListElements 中写入一些内容以动态加载。
我尝试用 ListElement
在小时内制作自己的文件作为 属性,但是模型然后我得到一个错误,说 ListElements 不能嵌套。
下面代码 运行 的错误是:
Cannot assign to non-existent property "hour"
我该如何解决这个问题?
代码:
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"
};
}
}
}