Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt 如何重用嵌套的listview';谁的代表?_Qt_Listview_Delegates_Qml - Fatal编程技术网

Qt 如何重用嵌套的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

我有一个嵌套的listview结构,其中委托listview将包含另一个listview。我希望嵌套listview的委托引用自身,因为嵌套listview将包含与自身相同类型的项,但这似乎不起作用

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”}