문서는 지금 시점에서입니다. 적어도 볼 수있는 대리자 만 인스턴스화하는 뷰에 대해서는.
그래서 해결책은 분명합니다. 은 대리인에 저장하지 않습니다. -하지만 어디에서 저장할 수 있습니까?
모델의 초기 상태를 유지하지 않으려면 모델이 가장 쉬운 장소가됩니다. 이 경우 stateChange 신호를 수신하고 새 상태를 모델에 다시 써야합니다.
모델에서 직접 상태를 변경하십시오. state -> model.stateFromModel
바인딩으로 인해 버튼에 자동으로 변경 사항이 적용됩니다.
그렇게 할 수없는 경우 상태를 저장하기 위해 영구 객체를 만들어야합니다. 이것은 JSObject
(일명 var : ({}) 일명지도) 또는 ListView
의 각 항목에 대해 Instantiator
으로 QObject
을 인스턴스화하고 에 따라 데이터를 저장하고 myInstantiator.objectAt(index)
을 사용하여 해당 개체를 검색 할 수 있습니다.
자발적으로 내 마음에 오는 마지막 방법은,이 같은 DelegateModel
을 사용하고 있습니다 :
이
DelegateModel {
id: dm
model: myOriginalModel
delegate: ProgrammButton {
state: stateFromModel
onStateChanged: DelegateModel.inPersistedItems = 1
}
}
뷰를 떠날 때 파괴되는 것을 방지하는 특수 그룹 persistedItems
에 stateChange 오브젝트에 대리자를 추가 .
마지막으로 ListView
의 모델에 DelegateModel
을 사용하고 delegate
을 설정하지 마십시오.