ListModel 내부의 데이터가 변경 될 때 일부 작업을 수행하기 위해 QML ListModel에 콜백 함수를 구현하려고합니다. 분명히 위에 만들 수는 없습니다 ... ListModel의 개별 사용자 정의 속성에 대한 핸들러가 변경되었습니다. 그래서, ListModel에 사용할 수있는 onDataChanged 핸들러를 사용하려고합니다.QML ListModel onDataChanged 문제
ListModel {
id: model
onDataChanged: {
console.warn("onDataChanged: "+get(topLeft).val + " vs. " + get(bottomRight).val)
}
}
그러나 onDataChanged는 ListModel의 첫 번째 요소 만 참조하는 것 같습니다. 즉, 목록 아래로 요소를 조작하는 경우에도 topLeft 및 bottomRight는 항상 첫 번째 요소를 가리 킵니다.
여기서 내가 필요한 것은 ListModel의 올바른 행을 정확하게 반영하는 신뢰할 수있는 핸들러입니다.
[일반 개체 모델] (http://stackoverflow.com/questions/35160909/how-to-create-a-generic-object-model-for-use-in-qml/35161903#35161903)을 사용하는 경우 그런 다음 개별 변경 알림과 함께 일반 속성을 사용할 수 있습니다. – dtech
프로젝트의 제약으로 인해 불가능합니다. 왜 다른 행을 조작 할 때 onDataChanged가 맨 처음 행을 반환합니까? 이 매개 변수를 잘못 사용하고 있습니까? – user1765354
'QAbstractItemModel :: dataChanged()'의 인수는'QModelIndex', 즉 클래스 유형의 객체입니다. 이것을 정수를 필요로하는 함수에 전달하는 경우 JavaScript 환경은 마술 유형 변환 중 하나를 수행 할 가능성이 높습니다. 변경 사항이 이상한 데이터에 ListModel을 사용하면 대개 적절한 사용자 지정 모델이 더 좋음을 나타냅니다. –