我使用的QML列表视图一次显示一个元素
ListView
{
model: cppobj.list
...
}
cppobj
是一个可以修改的C++对象,即可以删除、附加项等。如果附加了一个元素,ListView将返回到第一个元素。更重要的是,没有调用ListView.onRemove
。有什么应对办法吗?
感谢
/编辑:C++对象的append
函数如下所示:
void append (QString str) { m_list.append(str); emit listChanged(m_list); }
您需要使用QAbstractListModel。请参阅此处的文档。
如果您想要一个可以直接在QML中使用的变体JSON数据的ListModel,您可以查看JsonListModel。它可以将JSON数据同步到ListModel,这样就不会丢失列表的当前滚动位置。您还可以应用转换动画,并拥有完整的ListView/ListModel功能。
ListView
{
model: JsonListModel {
source: myJsonData
keyField: "id"
}
...
}
您可以在这里找到如何使用JsonListModel的详细指南: