QML ListView 部分适用于 6.5.1,但不适用于 5.15.2

问题描述 投票:0回答:1

以下代码在 6.5.1 中按预期工作,但在 5.15.2 中则不然

import QtQuick 2.15
import QtQuick.Window 2.15

Window {
    width: 640
    height: 480
    visible: true
    title: qsTr("Hello World")

    ListView {
        anchors.fill: parent
        model: fakeModel
        delegate: Text {
            text: modelData.name
        }
        section.property: "blockName"
        section.criteria: ViewSection.FullString
        section.delegate: Text {
            text: section
            color: "red"
        }
    }

    property var fakeModel: [{
            "blockName": "ABC",
            "name": "Lorem Ipsum"
        }, {
            "blockName": "ABC",
            "name": "Front Raises"
        }, {
            "blockName": "ZXC",
            "name": "Band Tall "
        }, {
            "blockName": "ZXC",
            "name": "Overhead"
        }]
}

我正在使用 EndeavourOS Linux 6.1.55-1-lts

5.15.2 中:

在 6.5.2 中:

有谁知道是否有任何解决方法可以使列表视图部分与 qt5 一起使用?

谢谢

qt qml qtquick2
1个回答
0
投票

正如您在评论中指出的,对于 Qt5.15.x,请使用

ListModel
。如果您希望保留声明性数组,您可以读取并转换它以填充您的
ListModel
,例如

    ListView {
        anchors.fill: parent
        model: ListModel {
            function load(arr) { arr.forEach(e => append(e)) }
            Component.onCompleted: load(fakeModel)
        }
        delegate: Text {
            text: name
        }
        section.property: "blockName"
        section.criteria: ViewSection.FullString
        section.delegate: Text {
            text: section
            color: "red"
        }
    }
    
    property var fakeModel: [{
            "blockName": "ABC",
            "name": "Lorem Ipsum"
        }, {
            "blockName": "ABC",
            "name": "Front Raises"
        }, {
            "blockName": "ZXC",
            "name": "Band Tall "
        }, {
            "blockName": "ZXC",
            "name": "Overhead"
        }]
    
© www.soinside.com 2019 - 2024. All rights reserved.