在 TableView 中使用复选框
Using checkboes in TableView
我正在创建一个带有自定义委托的 TableView
,以便在列中包含 checkbox
es,我在以下方面取得了一些成功:
// 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
,每列中包含 checkbox
es。但是,我无法弄清楚如何将列的已检查状态从我的 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
}
}
我正在创建一个带有自定义委托的 TableView
,以便在列中包含 checkbox
es,我在以下方面取得了一些成功:
// 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
,每列中包含 checkbox
es。但是,我无法弄清楚如何将列的已检查状态从我的 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
}
}