我正在使用自定义委托创建一个TableView
,以便在列中添加checkbox
,并且我在以下方面取得了一些成功:
// 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
}
}
表的实现如下:
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
}
}
这至少会创建TableView
,其中包含5列,其中每列都有checkbox
个es。但是,我无法弄清楚如何将列的已检查状态从testModel
传播到TableView
。
答案 0 :(得分:0)
首先,您需要将列的role属性与模型的属性进行匹配。然后,您可以使用属性'styleData访问该属性的值。值'
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
}
}