【问题标题】:How to pass objects between qml如何在qml之间传递对象
【发布时间】:2016-10-26 04:46:14
【问题描述】:

我想将一个对象从一个 qml 传递到另一个 qml。 我有一个列表模型。

ListModel {
       id:favouriteapp
           ListElement {
               id: 1
               name:"ABSC"
               title:"5:03pm"
               description:"heloo-1"
               icon1:"images/climate_icon.png"
               icon2:"images/climate_icon.png"
               pinStatus : false
               isLoaded: false

           }
           ListElement {
               id: 2
               name:"GHTT"
               title:"Home at 5:23pm"
               description:"via Gaydon Road-2"
               icon1:"images/navigation_icon.png"
               icon2:"images/navigation_icon.png"
               pinStatus : false
               isLoaded: false

           }
}

现在我想通过字符串值将ListElement 的每个属性传递给其他qml。

如何将整个 ListElement 对象传递给其他 qml。

【问题讨论】:

  • 首先id 不能是字符串也不能是数字。 Read 文档。只需创建它,例如 id: obj1 并传递 obj1 作为对该项目的引用。
  • @folibis: id 是我的“ListElement”中的属性之一,我已经编辑了代码
  • 您刚刚删除了ids?你看我的回答了吗?
  • @folibis: 我如何传递对象的 id 而不是字符串。

标签: qt object model qml listmodel


【解决方案1】:

正如@folibis 所说,您需要为您的对象提供正确的 id

ListElement {
    id: obj1
    ...
}

这里是 MyFile.qml,您可以将引用传递给您的 ListElement 对象:

Item{
    ...
    function myFunction(listElementObject){
        //whatever you need to do with your object
    }
}

在与ListModel 相同的 QML 文件中,您将拥有

MyFile{
    id: myFileId
}

Component.onCompleted: myFileId.myFunction(obj1)

【讨论】:

    【解决方案2】:

    您始终可以使用favouriteapp.get() 将任何列表元素作为 JavaScript 对象访问,并将该对象传递到您需要的任何地方。

    您还可以允许其他组件访问模型并让它访问它需要的列表元素。

    您还可以让其他组件提供数据对象或单独的属性,并将它们绑定在您可以访问模型的位置。

    【讨论】:

    • 通过使用 'favouriteapp.get()' 如何从其他 qml 访问模型。我的模型 ID 'favouriteapp' 范围仅在第一个 qml 中。
    • 你的意思是选项2?将属性添加到其他组件并将您的列表模型分配给该属性
    • 没有。我想将一个对象从一个 qml 传递到另一个 qml。
    • 我列出了三个选项。你问如何做选项2。我也回答了。那么在这里重复你的问题有什么帮助呢?
    猜你喜欢
    • 2015-01-10
    • 2013-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-03
    • 1970-01-01
    相关资源
    最近更新 更多