2017-04-11 143 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++模型一側實現這個邏輯可能更容易。