我创建了一个虚拟ListModel,然后加载到TableView:
ListModel{
id: testModel
ListElement{
status: false;
}
}
function testFunction()
{
for(var i=0;i<45;i++)
{
testModel.append({});
}
}
TableView
{
id: idTPTable
height: 90
width: 150
model: testModel
z:-1
TableViewColumn {
role: "status"
title: "Activation On/Off"
heigth: 150
width: 100
delegate: Checkbox{
id: idDelegatedCheckbox
}
}
}
我假装使用委托的Checkbox组件来选择TableView中的项目。
我按以下方式检查表格中的第一项:
选择第一项
然后我向下滚动并返回到顶部,我选择的项目消失,其他项目被选中。
选择了不同的项目
你知道为什么吗?
提前致谢。
答案 0 :(得分:2)
TableView委托根据需要进行实例化,并且可以随时回收或销毁。与任何Qt快速项目视图(ListView
,GridView
,PathView
,TableView
...)一样,状态不应存储在委托中。因此,您的CheckBox
代表必须存储其&#34;已检查&#34;模型中的状态:
delegate: Checkbox {
id: idDelegatedCheckbox
checked: model.checked // read from the model when created or recycled
onCheckedChanged: model.checked = checked // write to the model when checked or unchecked
}