如何在qml之间传递对象
Posted
技术标签:
【中文标题】如何在qml之间传递对象【英文标题】:How to pass objects between 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”中的属性之一,我已经编辑了代码
您刚刚删除了id
s?你看我的回答了吗?
@folibis: 我如何传递对象的 id 而不是字符串。
【参考方案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。我也回答了。那么在这里重复你的问题有什么帮助呢?以上是关于如何在qml之间传递对象的主要内容,如果未能解决你的问题,请参考以下文章
如何在 QWebEngineView 中将值从 QML 传递到 JavaScript