动态C ++模型和QML ListView

时间:2014-10-04 18:04:42

标签: c++ qt listview qml

我正在使用QML列表视图,一次显示一个元素

 ListView
 {
      model: cppobj.list
      ...
 }

cppobj是一个可以修改的C ++对象,即可以删除,附加等项目。如果附加了一个元素,ListView将返回第一个元素。更不用说ListView.onRemove了。任何想法如何处理它?<​​/ p>

由于

/ edit:C ++对象的append函数如下所示:

void append (QString str) { m_list.append(str); emit listChanged(m_list); }

2 个答案:

答案 0 :(得分:2)

您需要使用QAbstractListModel。请参阅文档here

答案 1 :(得分:0)

如果您希望拥有一个可以在QML中直接使用的变体JSON数据的ListModel,可以查看 JsonListModel 。它可以将JSON数据同步到ListModel,因此您不会丢失列表的当前滚动位置。您还可以应用过渡动画,并具有完整的ListView / ListModel功能。

 ListView
 {
      model: JsonListModel {
          source: myJsonData
          keyField: "id"
      }
      ...
 }

您可以找到有关如何使用JsonListModel here的详细指南: