Qt 如何重用嵌套的listview';谁的代表?
我有一个嵌套的listview结构,其中委托listview将包含另一个listview。我希望嵌套listview的委托引用自身,因为嵌套listview将包含与自身相同类型的项,但这似乎不起作用Qt 如何重用嵌套的listview';谁的代表?,qt,listview,delegates,qml,Qt,Listview,Delegates,Qml,我有一个嵌套的listview结构,其中委托listview将包含另一个listview。我希望嵌套listview的委托引用自身,因为嵌套listview将包含与自身相同类型的项,但这似乎不起作用 Component { id: subSequenceComponent ItemDelegate { id: subSequenceItemDelegate property var id: edit.id ColumnLayout
Component {
id: subSequenceComponent
ItemDelegate {
id: subSequenceItemDelegate
property var id: edit.id
ColumnLayout {
Text{
text: edit.name
}
ListView {
width: 180; height: 200
model: items.subModelFromId(subSequenceItemDelegate.id)
delegate: subSequenceComponent
}
}
}
}
这项工作:
Component {
id: subSequenceComponent
ItemDelegate {
id: subSequenceItemDelegate
property var id: edit.id
ColumnLayout {
Text{
text: edit.name
}
ListView {
width: 180; height: 200
model: items.subModelFromId(subSequenceItemDelegate.id)
delegate: Text{
text: edit.name
}
}
}
}
}
是否有办法重用您所属的同一个代理?它可能与此连接。基本上,QML有一些旨在防止意外无限递归的检查,但它们并没有得到很好的实现,甚至在打算嵌套且没有无限递归危险的场景中也会触发误报
如果是这种情况,那么您可以使用额外的
加载器来欺骗该检查,该加载器将从字符串加载组件,而不会捕获嵌套递归。谢谢,这是有效的。最初,我发现加载程序无法工作,因为包含ItemDegate的qml文件被封装在一个组件中。我需要确保QML文件只包含一个ItemDelegate,并像这样加载委托:委托:组件{Loader{source:“SubSequenceItemDelegate.QML”}