2017-04-11 145 views
0

我想改变QML treeview中确定的父节点的子节点,我想遍历每个子节点并更改我想要的属性,但是我不知道如何从父节点获取子节点列表。 我有如下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() 
     } 
    } 
    } 
} 

当我点击节点上打开一个点击,在“显示”按钮后更改所选节点的属性菜单,从这个节点,我需要得到它的儿童并且改变父母上改变的相同财产。

我该怎么办?

+0

在模型上实现它可能会更容易。 – m7913d

回答

1

您可以使用DelegateModel来获取儿童的QModelIndex

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仍然不是那么容易,但在this post已经描述。

正如我的评论所建议的那样,在C++模型一侧实现这个逻辑可能更容易。