如何显示当前选择的QML树视图?

如何显示当前选择的QML树视图?,qml,Qml,我可以显示当前选择QML ListView,但类似的东西在TreeView中不起作用 部分问题是TreeView无法识别索引,在ListView的情况下,该索引会传递给代理。我尝试了styleData.index,但也不起作用 rowDelegate: Item { id: row_delegate height: 40 Rectangle { id: rectid anchors.fill:

我可以显示当前选择QML ListView,但类似的东西在TreeView中不起作用

部分问题是TreeView无法识别
索引,在
ListView
的情况下,该索引会传递给代理。我尝试了
styleData.index
,但也不起作用

    rowDelegate: Item {
        id: row_delegate
        height: 40
        Rectangle {
            id: rectid
            anchors.fill: parent

            MouseArea {
                id: mouse_area
                anchors.fill: parent

                onClicked: {
                    console.log("Row clicked " + rectid.styleData.index)

                }
            }
        }
    }
输出为:

qml:单击的行未定义

如所述,在命名空间
styleData
中有一组属性,可以从委托中用于几乎相同的目的

例如,可以设置作为代理一部分的标签的文本属性,如下所示:

text: styleData.value
其中
styleData.value
为(文档摘录):

此项的值或文本

同样,你有:

styleData.pressed-按下项时为true

styleData.index-模型中当前项的QModelIndex

styleData.hasChildren-如果当前项的模型索引具有或可以具有子项,则为true

等等。。。有关完整列表,请参阅文档

还要注意文档末尾的注释:

注意:出于性能原因,创建的委托可以跨多个表行回收。这意味着,当您使用styleData.row或model等隐式属性时,这些值可以在构造委托后更改。这意味着您不应该假设在调用Component.onCompleted时内容是固定的,而是依赖于对此类属性的绑定


我更新了问题,
styleData.index
在rowdelegate中实际上不起作用我想
styleData
是一个附加属性,因此您不能以这种方式访问它,它不是
MouseArea
的一部分。尝试给你一个矩形id,然后通过该id引用
styleData
,称为
rectId.styleData.andSoOn
。仍然不起作用,错误消息是“TypeError:无法读取未定义的属性'index'”,请发布更新的代码段,否则,我无法知道您这次试图做什么以及有什么错误。我更新了它,正如您所看到的,我给了所有元素id,并尝试了所有元素,但结果相同。
styleData
未附加到
MouaeArea
,因此您的示例是错误的,(幸运的是)答案仍然有效。再试一次。