我面临着QML / C ++项目的一个小问题。我正在使用转发器在Rectangle中绘制点,这些点来自模型。这是我的代码:
main.qml
Rectangle {
id: rect
height:500
width:500
Repeater {
id: pointsRepeater
model: qListPoints
Point {
}
}
}
qListPoints来自我写的C ++:
Q_PROPERTY( QVariant qListPoints READ getListPoints NOTIFY listPointsChanged)
所以基本上当我添加或更新列表点时,我会发出listPointsChanged(),而我的main.qml会从列表中重新绘制新的或更新的点。我的问题是当我向我的列表中添加点并且我发出listPointsChanged()时,所有点都被重绘,这就像一个缓慢的频闪效果。我只想要重新绘制新点。可能吗 ?
提前谢谢。
答案 0 :(得分:1)
我认为,如果你使用了从QAbstractListModel派生的正确模型,那么只会重新绘制你添加/更改/删除的点。您所看到的问题可能与提到here的问题相同:
注意:视图无法知道QList的内容已更改。如果QList发生变化,则需要通过再次调用QQmlContext :: setContextProperty()来重置模型。
视图只知道该属性已更改,但它对该模型中的特定项目一无所知,因此它只是重绘所有内容。