在 TableView 中使用复选框

Using checkboes in TableView

我正在创建一个带有自定义委托的 TableView,以便在列中包含 checkboxes,我在以下方面取得了一些成功:

// TableViewCheckBoxColumn.qml
import QtQuick 2.2
import QtQuick.Controls 1.4
import QtQuick.Controls.Styles 1.4

TableViewColumn {
    title: ""
    role: "check"
    delegate: CheckBox {
        id: checkBox
    }
}

table实现如下:

import QtQuick 2.2
import QtQuick.Controls 1.4
import QtQuick.Controls.Styles 1.4

Item {
    anchors.centerIn: parent

    ListModel {
        id: testModel
        ListElement {
            check1: true
            check2: true
            check3: false
            check4: false
            check5: false
        }
    }

    TableView {
        anchors.centerIn: parent
        TableViewCheckBoxColumn {
            id: checkedColumn1
        }

        TableViewCheckBoxColumn {
            id: checkedColumn2
        }

        TableViewCheckBoxColumn {
            id: checkedColumn3
        }

        TableViewCheckBoxColumn {
            id: checkedColumn4
        }

        TableViewCheckBoxColumn {
            id: checkedColumn5
        }
        model: testModel
    }
}

这至少创建了包含 5 列的 TableView,每列中包含 checkboxes。但是,我无法弄清楚如何将列的已检查状态从我的 testModel 传播到 TableView

好的,首先您需要将列的角色 属性 与模型的 属性 相匹配。然后您可以使用 属性 'styleData. value'

访问 属性 的值
ListModel {
    id: testModel

    ListElement {
        check1: true
        check2: true
        check3: false
        check4: false
        check5: false
    }
}


TableView {
    width: 1000; height: 500

    anchors.centerIn: parent
    TableViewColumn {
        role: "check1"

        delegate: CheckBox {
            checked: styleData.value
        }
    }

    TableViewColumn {
        role: "check2"

        delegate: CheckBox {
            checked: styleData.value
        }
    }

    TableViewColumn {
        role: "check3"

        delegate: CheckBox {
            checked: styleData.value
        }
    }

    TableViewColumn {
        role: "check4"

        delegate: CheckBox {
            checked: styleData.value
        }
    }

    TableViewColumn {
        role: "check5"

        delegate: CheckBox {
            checked: styleData.value
        }
    }

    model: testModel
}

这个更好:

TableView {
    width: 1000; height: 500

    anchors.centerIn: parent
    TableViewColumn {
        role: "check1"
    }

    TableViewColumn {
        role: "check2"
    }

    TableViewColumn {
        role: "check3"
    }

    TableViewColumn {
        role: "check4"
    }

    TableViewColumn {
        role: "check5"
    }

    model: testModel

    itemDelegate: CheckBox {
        checked: styleData.value
    }
}