我正在尝试将ListModel的内容绘制到QML中的画布。此模型的内容显示在应用程序中其他位置的ListView中,因此我知道模型已正确填充内容。
不,我每次模型数据更改时都尝试更新画布:
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()
信号,并且会调用画布的onPaint()
。但是
console.log(particleListModel.count)
是“未定义”。
这怎么可能,而常规ListView能够正确显示内容?
答案 0 :(得分:1)
使用模型时,您需要调用rowCount
函数而不是count
,因为后者是ListView
的属性,而不是模型的属性。
以下内容应该有效:
console.log(particleListModel.rowCount())