QML 遍历模型

QML iterating through model

我正在尝试将 ListModel 的内容绘制到 QML 中的 canvas。此模型的内容显示在应用程序其他地方的 ListView 中,因此我知道模型已正确填充内容。

不,每次模型数据更改时,我都会尝试更新 canvas:

import QtQuick 2.7
import QtQml.Models 2.2

Item {
    Canvas {
        anchors.fill: parent
        id: canvas

        onPaint: {
            console.log("onPaint()")
            var ctx = getContext("2d")
            ctx.fillStyle = Qt.rgba(0, 0, 0, 1)
            ctx.fillRect(0, 0, width, height)

            console.log(particleListModel.count)
            for(var i = 0; i < particleListModel.count; i++) {
                console.log(i)
            }
        }
    }

    Connections {
        target: particleListModel

        onDataChanged: {
            console.log("data changed")
            canvas.requestPaint()
        }
    }
}

一旦我更改数据(在 C++ 中),我就会收到 dataChanged() 信号并调用 canvas 的 onPaint()。但是

的调试输出
console.log(particleListModel.count)

是"undefined"。

这怎么可能,而常规的ListView却能够正确显示内容?

使用模型时,您需要调用 rowCount 函数而不是 count,因为后者是 ListView 而不是模型的 属性 .

以下应该有效:

console.log(particleListModel.rowCount())