나는이 headerDelegate
이 다소 버그가 있거나이 시나리오에서 사용되지 않을 것으로 판단합니다. 나는 당신의 유스 케이스에 사용하기 위해 scrath의 헤더를 구현하려고한다. 시작 지점으로 사용해보십시오.
Rectangle {
width: 640
height: 480
ListModel {
id: tstModel
ListElement { animal: "cat" }
ListElement { animal: "cat" }
ListElement { animal: "cat" }
ListElement { animal: "cat" }
ListElement { animal: "cat" }
ListElement { animal: "cat" }
ListElement { animal: "cat" }
}
TextField{
id: tableViewCustomHeader
property int curRow: tableView.currentRow
property bool isActual: curRow >= 0
function reloadText() { text = tstModel.get(curRow).animal }
function saveText() { tstModel.setProperty(curRow, "animal", text); tableView.model = tstModel; }
width: animalColumn.width
height: isActual ? 20 : 0
onCurRowChanged: {
if (isActual >= 0) reloadText();
focus = true;
}
onTextChanged: if (isActual >= 0) saveText()
}
TableView {
id: tableView
anchors {
top: tableViewCustomHeader.bottom
bottom: parent.bottom
left: parent.left
right: parent.right
}
model: tstModel
headerVisible: false
TableViewColumn {
id: animalColumn
title: "Animal"
role: "animal"
width: 200
resizable: false
movable: false
}
}
}
나중에 원하는대로 편집 할 수 있습니다. 다시
Rectangle {
width: 640
height: 480
ListModel {
id: tstModel
ListElement { animal: "dog" }
ListElement { animal: "cat" }
}
TableView {
id: tableView
anchors.fill: parent
model: tstModel
headerDelegate:
TextField{
property int curRow: tableView.currentRow
function reloadText() { text = tstModel.get(curRow).animal }
function saveText() { tstModel.setProperty(curRow, "animal", text); tableView.model = tstModel; }
onCurRowChanged: {
if (curRow >= 0) reloadText()
}
onTextChanged: saveText()
width: parent.width
}
TableViewColumn {
id: animalColumn
title: "Animal"
role: "animal"
width: 200
resizable: false
movable: false
}
}
}
그러나, 그것은 아주 이상한 방식으로 작동 당신이 그것에 텍스트 필드를 추가하면이 내가 끝낼했습니다 것 - 그것은 headerDelegate
로 갈 수있는 엄격한 요구 사항이 있다면
그래서 나는 그것에 반대 투표를 할 것입니다.
https://bugreports.qt.io/browse/QTBUG-50445 –