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())
我正在尝试将 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())