왜 이것이 작동하지 않는지 궁금합니다.왜 QML ListView 대리인이 선택 변경 사항에 즉시 반응하지 않습니까?
ListView {
id: root
property var selection: QtObject {}
...
delegate: MyView {
focused: ListView.isCurrentItem
selected: root.selection[index] === true
Rectangle {
id: selectionOverlay
anchors.fill: parent
color: "red"
opacity: 0.3
visible: selected
}
}
Keys.onPressed: if (event.key === Qt.Key_Space) {
if(!root.selection[root.currentIndex])
root.selection[root.currentIndex] = true;
else
root.selection[root.currentIndex] = false;
}
}
즉, 대리인은 선택 개체의 변경 내용에 응답하지 않습니다. 인덱스에 대한 대리자를 다시 만들 때만 선택 항목을 볼 수 있습니다 (예 : 충분히 멀리 또는 뒤로 스크롤 할 때).
root.selection[index]
에서 ListView.view.selection[index]
으로 변경하는 것도 도움이되지 않습니다.
다중 선택 항목을 관리하려면 ListView 수준에서 선택해야합니다. 잠시 머리를 숙이고 있습니다.
감사합니다.
마우스 클릭시 현재 색인을 업데이트하지만 문제는 마우스가 아닙니다. 스페이스 바를 누르면 콘솔에서 Listview의 selection 속성이 업데이트되었지만이를 반영하기 위해 대리자가 다시 그려지지 않습니다. –
기본적으로 보이는 대리자에게 속성 바인딩을 확인하고 무언가가 변경되면 다시 그릴 수있는 방법이 필요합니다. –
@AlexJenter 바인딩은 속성 값이 변경 될 때만 작동합니다. 귀하의 경우에는 변경되지 않습니다. –