我有一個ListView和一個GridView。想象一下這樣:第一個視圖呈現類別,第二個視圖呈現每個類別中的文章。當ListView的當前索引由javascript更改時,我想動態更改GridView的數據模型。我們如何做到這一點?通過javascript更改QML GridView模型
2
A
回答
3
您只需分配一個新模型。以下是一個基於ListModel文檔的示例。該模型在左側的ListView中顯示模型中的水果。單擊委託時,它將GridView右側的模型設置爲由attributes
角色定義的列表。
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模型使用的查詢,而不是設置不同的模型。
2
取決於您的模型。假設CategoriesModel
有category
作用,並ArticlesModel
有setCategory
方法:
ListView {
model: CategoriesModel {}
delegate: Item {
MouseArea {
anchors.fill: parent
onClicked: {
grid_view.model.setCategory(model.category)
}
}
// ...
}
}
GridView {
id: grid_view
model: ArticlesModel {}
// ...
}
相關問題
- 1. 在運行時更改QML GridView模型
- 2. 通過模型迭代QML
- 3. yii2更改gridview模型
- 4. 使用QML更改C++模型
- 5. 如何從QML更改C++模型?
- 6. QML - 通過模型訪問QList數據
- 7. 更改QML ListView的模型不會更改相應的代理
- 8. 通過指令更改ng模型
- 9. ASP GridView通過分頁更改
- 10. 通過JavaScript在SetFocusedRowIndex(-1)之後更改DevExpress GridView行背色
- 11. 通過javascript更改div id
- 12. 通過Javascript更改圖像?
- 13. 通過javascript更改href
- 14. Highcharts通過javascript更改pointPlacement
- 15. 通過JavaScript更改值
- 16. MVC模型通知更改
- 17. 更改Qml中的JavaScript綁定事件?
- 18. Rails通過更改設置了哪個模型ID來更改模型「belongs_to」的模型
- 19. 通過Javascript更改CSS過濾器值
- 20. 通過javascript更改SVG過渡到點
- 21. 通過Ajax Post更新模型更改視圖MVC3
- 22. 動態更改用作qml項目基礎的模型
- 23. 如何在QML中創建基於狀態的模型更改
- 24. 通過QML中C++模型的索引獲取數據
- 25. Qt Qml通過加載器傳遞模型的最佳方式
- 26. QML GridView並不反映C++模型中的變化
- 27. 更改模型
- 28. 通過文本框過濾Gridview已更改
- 29. 從qml更改上下文
- 30. 使用JavaScript更改css類模型