通过javascript更改QML GridView模型
我有一个ListView和一个GridView。想象一下:第一个视图显示类别,第二个视图显示每个类别中的文章。当ListView的当前索引被javascript更改时,我想动态地更改GridView的数据模型。我们如何做到这一点?您只需分配一个新模型即可。下面是一个基于ListModel文档的示例。此模型在左侧的列表视图中显示模型中的结果。单击代理时,它会将右侧GridView的模型设置到由通过javascript更改QML GridView模型,javascript,qt,qml,Javascript,Qt,Qml,我有一个ListView和一个GridView。想象一下:第一个视图显示类别,第二个视图显示每个类别中的文章。当ListView的当前索引被javascript更改时,我想动态地更改GridView的数据模型。我们如何做到这一点?您只需分配一个新模型即可。下面是一个基于ListModel文档的示例。此模型在左侧的列表视图中显示模型中的结果。单击代理时,它会将右侧GridView的模型设置到由属性角色定义的列表中 import QtQuick 1.0 Item { width: 600;
属性
角色定义的列表中
import QtQuick 1.0
Item {
width: 600; height: 400
ListView {
width: 300; height: 400
model: fruitModel
delegate: Text {
font.pixelSize: 20
text: name
width: 300
MouseArea {
anchors.fill: parent
onClicked: grid.model = attributes
}
}
}
GridView {
id: grid
x: 300; width: 300; height: 400
delegate: Text {
text: description
font.pixelSize: 20
}
}
ListModel {
id: fruitModel
ListElement {
name: "Apple"
cost: 2.45
attributes: [
ListElement { description: "Core" },
ListElement { description: "Deciduous" }
]
}
ListElement {
name: "Orange"
cost: 3.25
attributes: [
ListElement { description: "Citrus" }
]
}
ListElement {
name: "Banana"
cost: 1.95
attributes: [
ListElement { description: "Tropical" },
ListElement { description: "Seedless" }
]
}
}
}
这是嵌套模型的一个示例,但还有其他可能性。例如,如果您从数据库获取数据,可能只需要更改GridView模型使用的查询,而不是设置其他模型。取决于您的模型。假设
CategoriesModel
具有categority
角色,并且ArticlesModel
具有setcategority
方法:
ListView {
model: CategoriesModel {}
delegate: Item {
MouseArea {
anchors.fill: parent
onClicked: {
grid_view.model.setCategory(model.category)
}
}
// ...
}
}
GridView {
id: grid_view
model: ArticlesModel {}
// ...
}