一个动态C++模型和一个QML ListView



我使用的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的详细指南:

最新更新