129 lines
3.1 KiB
QML
129 lines
3.1 KiB
QML
// Copyright (c) Daniel Gakwaya.
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
import QtQuick
|
|
import QtQuick.Controls
|
|
import Qt.labs.qmlmodels
|
|
|
|
ApplicationWindow {
|
|
width: 680
|
|
height: 400
|
|
visible: true
|
|
|
|
HorizontalHeaderView {
|
|
id: horizontalHeader
|
|
anchors.left: tableViewId.left
|
|
anchors.top: parent.top
|
|
syncView: tableViewId
|
|
|
|
}
|
|
|
|
VerticalHeaderView {
|
|
id: verticalHeader
|
|
anchors.top: tableViewId.top
|
|
anchors.left: parent.left
|
|
syncView: tableViewId
|
|
}
|
|
|
|
|
|
TableModel {
|
|
id: tableModelId
|
|
TableModelColumn { display: "checked" }
|
|
TableModelColumn { display: "amount" }
|
|
TableModelColumn { display: "fruitType" }
|
|
TableModelColumn { display: "fruitName" }
|
|
TableModelColumn { display: "fruitPrice" }
|
|
|
|
// Each row is one type of fruit that can be ordered
|
|
rows: [
|
|
{
|
|
// Each property is one cell/column.
|
|
checked: false,
|
|
amount: 1,
|
|
fruitType: "Apple",
|
|
fruitName: "Granny Smith",
|
|
fruitPrice: 1.50
|
|
},
|
|
{
|
|
checked: true,
|
|
amount: 4,
|
|
fruitType: "Orange",
|
|
fruitName: "Navel",
|
|
fruitPrice: 2.50
|
|
},
|
|
{
|
|
checked: false,
|
|
amount: 1,
|
|
fruitType: "Banana",
|
|
fruitName: "Cavendish",
|
|
fruitPrice: 3.50
|
|
}
|
|
]
|
|
}
|
|
|
|
TableView {
|
|
id: tableViewId
|
|
anchors.left: verticalHeader.right
|
|
anchors.top: horizontalHeader.bottom
|
|
anchors.right: parent.right
|
|
anchors.bottom: parent.bottom
|
|
|
|
columnSpacing: 1
|
|
rowSpacing: 1
|
|
|
|
model: tableModelId
|
|
|
|
/*
|
|
delegate: TextInput {
|
|
text: model.display
|
|
padding: 12
|
|
selectByMouse: true
|
|
|
|
onAccepted: model.display = text
|
|
|
|
Rectangle {
|
|
anchors.fill: parent
|
|
color: "#efefef"
|
|
z: -1
|
|
}
|
|
}
|
|
*/
|
|
|
|
|
|
delegate: DelegateChooser {
|
|
DelegateChoice {
|
|
column: 0
|
|
delegate: CheckBox {
|
|
checked: model.display
|
|
onToggled: model.display = checked
|
|
}
|
|
}
|
|
DelegateChoice {
|
|
column: 1
|
|
delegate: SpinBox {
|
|
value: model.display
|
|
onValueModified: model.display = value
|
|
}
|
|
}
|
|
DelegateChoice {
|
|
delegate: TextField {
|
|
text: model.display
|
|
selectByMouse: true
|
|
implicitWidth: 140
|
|
onAccepted: model.display = text
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
Button{
|
|
text: "See the data"
|
|
anchors.bottom: parent.bottom
|
|
onClicked: {
|
|
console.log(tableModelId.data(tableModelId.index(0,0),"display"))
|
|
}
|
|
}
|
|
|
|
}
|