C++ 当树视图中的父属性更改时,如何更改子属性?

C++ 当树视图中的父属性更改时,如何更改子属性?,c++,qt,treeview,qml,C++,Qt,Treeview,Qml,我想在QML树视图中更改已确定父节点的子节点,我想迭代每个子节点并更改所需的属性,但我不知道如何从父节点获取子节点列表。 我有以下QML菜单: TreeView { id: tree anchors.fill: parent model: model itemDelegate: CustomNode{ id: node Menu { id: menu MenuItem { text: "Show"

我想在QML树视图中更改已确定父节点的子节点,我想迭代每个子节点并更改所需的属性,但我不知道如何从父节点获取子节点列表。 我有以下QML菜单:

TreeView {
  id: tree
  anchors.fill: parent
  model: model
  itemDelegate: CustomNode{
    id: node
    Menu {
        id: menu
        MenuItem {
            text: "Show"
            onTriggered: {
                styleData.value.active = !!+state
            }
        }
    }

    MouseArea{
        anchors.fill: parent
        acceptedButtons: Qt.LeftButton
        onClicked: {
            idNode = styleData.value.vredId
            menu.popup()
        }
    }
  }
}
单击该节点时,会打开一个菜单,单击“显示”按钮后,该菜单会更改选定节点的属性,我需要从该节点获取其子节点,并更改在父节点上更改的相同属性

如何操作?

您可以使用获取孩子的QModelIndexes

DelegateModel
{
  id:delegateModel

  rootIndex: styleData.index
}

delegateModel.count // returns the number of children
delegateModel.modelIndex(i) // returns the model index of the ith element.
访问给定QModelIndex的数据仍然不是那么容易,但是已经在中进行了描述


我在注释中建议,在C++中模型侧实现这个逻辑更容易。

在模型方面可能更容易实现。