当我第一次设置TableView列和List Model时。它显示正常
但是当我通过删除所有列并添加列来更改列号时,也会更新列表模型。 TableView变为空 它只会显示我添加的第二列,而不会显示数据。
我正在使用Qt 5.7和QtQuick.Controls 1.4中的TableView 这是我的代码:
TableView {
id: tbl
width: 400
height: 300
model: lst
}
Component {
id: columnComponent
TableViewColumn {
width: 50
}
}
ListModel {
id: lst
}
Button {
text: "Click me"
anchors.top: tbl.bottom
onClicked: {
for(var i = tbl.columnCount-1; i>=0; i--) {
tbl.removeColumn(i)
}
tbl.addColumn(columnComponent.createObject(tbl,{ role: "1"}))
tbl.addColumn(columnComponent.createObject(tbl,{ role: "2"}))
tbl.addColumn(columnComponent.createObject(tbl,{ role: "3"}))
lst.clear()
var element = {}
element["1"] = "a"
element["2"] = "a"
element["3"] = "a"
lst.append(element)
tbl.model = lst
}
}
Button {
text: "Click me 2"
anchors.left: tbl.right
onClicked: {
for(var i = tbl.columnCount-1; i>=0; i--) {
tbl.removeColumn(0)
}
tbl.addColumn(columnComponent.createObject(tbl,{ role: "a"}))
tbl.addColumn(columnComponent.createObject(tbl,{ role: "b"}))
lst.clear()
var element = {}
element["a"] = "b"
element["b"] = "b"
lst.append(element)
tbl.model = lst
}
}
答案 0 :(得分:0)
显然,您需要设置从TableView
暂时分离模型。在您的每个onClicked
插槽中添加一行:
onClicked: {
tbl.model = undefined // add this line, temporarily detach tbl.model
for(var i = tbl.columnCount-1; i>=0; i--) {
tbl.removeColumn(i)
}
// ...
// code omitted for brevity
// ...
tbl.model = lst // reset the model
}