带有委托Checkbox的QML TableView有问题显示

时间:2016-06-08 22:09:38

标签: qt checkbox delegates qml tableview

我创建了一个虚拟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中的项目。

我按以下方式检查表格中的第一项:

选择第一项

然后我向下滚动并返回到顶部,我选择的项目消失,其他项目被选中。

选择了不同的项目

你知道为什么吗?

提前致谢。

1 个答案:

答案 0 :(得分:2)

TableView委托根据需要进行实例化,并且可以随时回收或销毁。与任何Qt快速项目视图(ListViewGridViewPathViewTableView ...)一样,状态不应存储在委托中。因此,您的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
}