Qml 在GridView中访问委托函数
我有一个GridView,它使用DelegateModel作为其模型:Qml 在GridView中访问委托函数,qml,Qml,我有一个GridView,它使用DelegateModel作为其模型: GridView{ function test(idx) { model.items.get(idx).testFunction() } model: DelegateModel{ id: visualModel model: myModel delegate: myItem {} } } 如果知道委托的索引,如何调用委托的函数或
GridView{
function test(idx) {
model.items.get(idx).testFunction()
}
model: DelegateModel{
id: visualModel
model: myModel
delegate: myItem {}
}
}
如果知道委托的索引,如何调用委托的函数或设置委托的属性
例如,如果我试图调用函数test
,我会得到错误
TypeError:对象[object object]的属性“testFunction”不是函数
我不明白。这是我的代表的顶部
Item {
id: delegateRoot
function testFunction() {
console.log("success")
}
那么,
model.items.get(idx)
行是否错误?另外,我如何检查/调试这是否真的给了我委托?您正在调用模型上的函数。但它位于视图的委托中,因此无法找到它
特别地,我不知道如何从视图中获取代理的解决方案。这里的问题可能是,在您尝试调用委托时,委托甚至还没有被创建
对于中继器
您可以轻松调用itemAt(index)
来获取它-因为中继器总是为模型中的所有内容实例化委托
很可能您希望重构,这样函数就不再是委托的成员,而只需获取模型数据(您可以通过get
从模型中检索)并通过模型中的角色操纵委托即可
例如,您可以有一个“触发器”角色。在委托中,将函数连接到已更改的信号,并在需要调用函数时在模型中增加该触发器