아래 예제 코드 (구문 오류가있을 수 있음)의 ListView에 대한 이벤트 처리기에서 ListView 대리자의 Text.text 항목에 어떻게 액세스합니까?QML Java - 이벤트 처리기에서 델리게이트 항목에 액세스
ListView {
id: mainLView
model: ListViewModel {}
delegate: Rectangle {
id: theRect
Text {
id: theText
text: ""
}
}
onMovementEnded {
//here is where I would like to access the text in Text, e.g
theText.text = "New Value"
}
}
theText는 이벤트 처리기에서 액세스 할 수 없으므로 작동하지 않는 코드는 작동하지 않습니다. 텍스트 값을 어떻게 설정합니까?
편집 : 나는 (응용 프로그램 부하시) 자바 코드를 통해 ListView에 항목을 추가 할 수 있습니다, 코드 일명
mainLView.model.append({'name': "First Value","city":"London"});
var myValue = model.get(currentIndex).city // or name
을 통해 이벤트 내부의 ListView의 값 (들)에 액세스 : 완성도를 들어
하지만 위임자 Text {text : ""} 값에 값을 할당하는 방법을 찾을 수 없습니다.
EDIT 2 7 월 10 일 다음은 달성하려는 코드 예제입니다.
ListView {
id: mainLView
model: ListModel { id: mainModel}
delegate: Rectangle {
id: theRect
Text {
id: theText
text: nameX
}
}
Component.onCompleted: {
for (var x=1; x < 99; x++) {
var data = {'nameX': "Name: " + x, "numberX":x};
mainModel.append(data);
}
}
onMovementEnded {
//here I want to set the value to numberX e.g (this does not work)
theText.text = mainView.model.get(currentIndex).numberX
}
}
이 질문은 귀하가 실제로 원하는 것을 명확하게 제시하지 못하기 때문에 대답하기가 어렵습니다. ListView는 각 ListModel 요소에 대한 대리자를 렌더링합니다. 모든 요소를 값으로 업데이트하거나 특정 요소를 업데이트하는 방법을 묻는 방법을 묻고 있습니까? 이 질문은 실제로 편집하려는 요소를 어떻게 지정하고 있는지에 대한 것 같습니다. 일단 당신이 우리에게 정보를 제공하면 당신은 그것의 색인을 얻고 그것을 업데이 트하는 데 도움이됩니다. – Deadron
데드론, 코멘트 주셔서 감사합니다. 움직임이 끝나면 인덱스의 값을 업데이트하려고합니다 (위의 코드는 간단하지만 문제를 보여줍니다). – Nepaluz
움직임이 신호 내부에서 끝나고 (따라서리스트 뷰를 업데이트 할 때) 인덱스에서 값을 업데이트하려고합니다. 내 전체 코드는 실제로 listmodel의 각 요소에 두 개의 항목이 있습니다. 목록보기가 롤링 될 때 하나의 값을 표시하고 중지 할 때 다른 값을 표시하고 싶지만, 간결성을 위해 위의 코드를 사용하여 도움이 필요한 위치 만 표시하도록했습니다. 보다 완벽한 코드 예제를 원한다면 알려주십시오. – Nepaluz