2017-04-11 7 views
0

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() 
     } 
    } 
    } 
} 

を親に変更された同じプロパティを変更します。

どうすればいいですか?

+0

これをモデル側で実装する方が簡単かもしれません。 – m7913d

答えて

1

DelegateModelを使用して、子供のQModelIndexを取得することができます。与えられた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. 

はまだそんなに簡単ではありませんが、すでにthis postに記載されています。

私のコメントで示唆したように、C++のモデル側でこのロジックを実装する方が簡単です。

関連する問題