【问题标题】:ListModel in qml, getting objects from modelqml中的ListModel,从模型中获取对象
【发布时间】:2013-02-04 15:41:17
【问题描述】:

我有一个 ListModel,我按以下方式填写:

property ListModel projects: ListModel {}
property Project currentProject : null

function initialization(){
    var comp = Qt.createComponent("Project.qml");
    var object = comp.createObject(parent,{});
    projects.append(object);
    currentProject = projects.get(0)

}
Component.onCompleted: root.initialization();

我在currentProject = projects.get(0) 行中有一个错误。 错误文字:

main.qml:14: Error: Cannot assign QObject* to Project_QMLTYPE_0*

【问题讨论】:

  • 作为解决方法,我建议将property更改为property QtObject currentProject : null
  • 谢谢,它可以使用,但这看起来很糟糕

标签: qt qml


【解决方案1】:

当您将 Project 对象附加到 ListModel 时,是 Project 对象的属性被添加到 ListModel(作为 ListModel 角色),而不是 Project 对象本身。因此,当您使用ListModel.get() 时,返回对象只是一个以 ListModel 角色作为属性的对象(准确地说是 QObject*),而不是 Project 对象。

更简单地说,ListModel 不是Project 对象的容器。它只存储您的 Project 对象的属性。

【讨论】:

  • 这很有趣!谢谢。对了,你能帮忙选择容器吗?
  • 最好使用Data Model 设计来保存数据并显示您的用户界面。如果您的Project 是一个 UI,则使其成为视图(ListView、Repeater 等)的委托,然后将数据插入到 ListModel。如果您只想保留数据,请将其放入 JavaScript 数组并存储在 variant 中。您也可能对QML list type 感兴趣
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-10-24
  • 1970-01-01
  • 1970-01-01
  • 2020-07-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多