如何在父树属性在树视图中更改时更改子属性?
问题描述:
我想改变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()
}
}
}
}
当我点击节点上打开一个点击,在“显示”按钮后更改所选节点的属性菜单,从这个节点,我需要得到它的儿童并且改变父母上改变的相同财产。
我该怎么办?
答
您可以使用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++模型一侧实现这个逻辑可能更容易。
在模型上实现它可能会更容易。 – m7913d