qt - 动态创建QML ListElement和内容

标签 qt qml

所以我试图在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"
            };
        }
    }
}

关于qt - 动态创建QML ListElement和内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27902535/

相关文章:

c++ - QTreeView 禁止显示根节点

python - 如何更改 qml 或 PySide2 中 XYSeries 中的所有点?

c++ - 将 C++ 对象暴露给 QML 并监听更改事件

c++ - QML:关闭 QQuickWindow 会关闭我的应用程序

c++ - 如何在 C++ 中从文件创建自定义 QML 元素?

qt - 如何将 ListModel 与 SwipeView 结合使用?

qt - 如何使用 Qt 安装 Windows 服务?

c++ - 如何从 QSS 选择 QTextBrowser 中的 href 标签?

c++ - OMNET++ 5.0 和 Qt

linux - 警告 : GDB: Failed to set controlling terminal: Invalid argument