DelegateModelGroup QML Type
필터링된 시각적 데이터 항목 집합을 캡슐화합니다. 더 보기...
| Import Statement: | import QtQml.Models |
속성
- count : int
- includeByDefault : bool
- name : string
신호
- changed(array removed, array inserted)
방법
- void addGroups(int index, int count, list<string> groups)
- var create(int index)
- var create(jsdict data, array groups)
- var create(int index, jsdict data, array groups)
- var get(int index)
- void insert(jsdict data, var groups)
- void insert(int index, jsdict data, array groups)
- void move(var from, var to, int count)
- void remove(int index, int count)
- void removeGroups(int index, int count, list<string> groups)
- void resolve(int from, int to)
- void setGroups(int index, int count, list<string> groups)
상세 설명
DelegateModelGroup 유형은 DelegateModel 의 위임 항목에 대한 모델 데이터를 처리하고, 이러한 위임 항목을 정렬 및 필터링할 수 있는 수단을 제공합니다.
DelegateModel 내의 초기 인스턴스화 가능한 델리게이트 항목 집합은 해당 그룹의 items 로 표현되며, 이는 일반적으로 DelegateModel::model 에 할당된 모델의 내용을 직접 반영합니다. 이 집합은 해당 DelegateModelGroup의 name 를 DelegateModel::filterOnGroup 속성에 할당함으로써 DelegateModel::groups 의 다른 구성원 중 어느 것이든 그 내용으로 변경할 수 있습니다.
DelegateModelGroup 내 항목의 데이터는 get() 함수를 사용하여 액세스할 수 있으며, 이 함수는 모델 데이터뿐만 아니라 그룹 구성원 정보 및 인덱스 정보도 반환합니다. 이를 move() 함수와 함께 사용하면 뷰 정렬을 구현할 수 있으며, remove() 함수를 사용하여 뷰에서 항목을 필터링하거나, setGroups() 함수와 Package 델리게이트를 사용하여 항목을 서로 다른 뷰로 분류할 수 있습니다. 서로 배타적인 그룹인 경우에만 각 그룹을 독립적으로 정렬할 수 있습니다. 한 그룹에서 항목을 이동하면 해당 항목이 속한 다른 모든 그룹에서도 함께 이동됩니다.
insert() 함수를 사용하여 DelegateModelGroup에 데이터를 직접 삽입함으로써 모델의 데이터를 보완할 수 있습니다. 이를 통해 뷰에 모의 항목을 도입하거나, 실제 모델 데이터가 확보되는 시점에 resolved 를 통해 실제 모델 데이터로 대체될 자리 표시자 항목을 배치할 수 있습니다.
또한 create() 함수를 사용하여 DelegateModelGroup에서 델리게이트 항목을 직접 인스턴스화할 수 있습니다. 이를 통해 뷰 유형 없이도 DelegateModel 를 사용하거나, 현재 뷰의 가시 영역 내에 있는지 여부와 관계없이 인스턴스화해야 할 특정 항목을 선별하여 선택할 수 있습니다.
QML 동적 뷰 정렬 튜토리얼도 참조하십시오 .
속성 문서
count : int [read-only]
이 속성은 그룹에 포함된 항목의 개수를 저장합니다.
includeByDefault : bool
이 속성은 새 항목이 기본적으로 이 그룹에 할당되는지 여부를 나타냅니다.
name : string
이 속성에는 그룹의 이름이 저장됩니다.
모델 내의 각 그룹은 소문자로 시작하는 고유한 이름을 가져야 합니다.
Signal 문서
changed(array removed, array inserted)
이 신호는 그룹에서 항목이 제거되거나 삽입되었을 때 발생합니다.
removed 및 inserted 배열에 포함된 각 객체는 두 가지 값을 가집니다. 첫 번째로, 삽입되거나 제거된 첫 번째 항목의 인덱스이며, 두 번째로 삽입되거나 제거된 연속된 항목의 개수입니다.
각 인덱스는 이전 변경 사항을 반영하여 조정되며, 삽입된 항목보다 제거된 항목이 먼저 표시됩니다.
참고: 해당 핸들러는 onChanged 입니다.
메서드 문서
void addGroups(int index, int count, list<string> groups)
index 에서 시작하는 ‘ count ’ 항목을 groups 에 추가합니다.
var create(int index)
var create(int index, jsdict data, array groups = undefined)
var create(jsdict data, array groups = undefined)
그룹 내 index 에 있는 인스턴스화된 항목에 대한 참조를 반환합니다.
data 객체가 제공되면, 해당 객체는 index 에 있는 inserted 상태가 되며, 이 새로운 항목을 참조하는 항목이 반환됩니다. 선택적 매개변수 groups 는 새로운 항목이 속해야 할 그룹을 지정하며, 지정되지 않은 경우 이 매개변수는 ()가 호출된 그룹 create 과 동일합니다.
create가 반환하는 모든 항목은 persistedItems 그룹에 추가됩니다. 이 그룹에 속한 항목은 어떤 뷰에서도 참조되지 않을 때도 인스턴스화된 상태로 유지됩니다.
var get(int index)
그룹 내 index 에 있는 항목을 설명하는 자바스크립트 객체를 반환합니다.
반환된 객체에는 연결된 DelegateModel 의 델리게이트가 이용할 수 있는 정보와 해당 항목의 모델이 모두 포함되어 있습니다. 이 객체에는 다음과 같은 속성이 있습니다:
- model: 항목의 모델 데이터입니다. 이는 델리게이트의 model context 속성과 동일합니다.
- groups: 해당 항목이 속해 있는 그룹 이름의 목록입니다. 이 속성에 값을 설정하여 항목의 그룹 소속 여부를 변경할 수 있습니다.
- inItems: 해당 항목이 ` items ` 그룹에 속하는지 여부를 나타냅니다. 이 속성에 값을 쓰면 해당 항목을 그룹에 추가하거나 제거할 수 있습니다.
- itemsIndex ‘ items ’ 그룹 내에서 해당 항목의 인덱스입니다.
- in<GroupName> 항목이 동적 그룹 groupName에 속하는지 여부를 나타냅니다. 이 속성에 값을 쓰면 해당 그룹에 항목을 추가하거나 제거할 수 있습니다.
- <groupName>Index 동적 그룹 groupName 내에서 항목의 인덱스입니다.
- isUnresolved: 항목이 ` DelegateModel::model`에 할당된 모델의 인덱스에 바인딩되어 있는지 여부를 나타냅니다. 항목이 모델에 바인딩되어 있지 않으면 `true`를, 바인딩되어 있으면 `false`를 반환합니다.
void insert(int index, jsdict data, array groups = undefined)
void insert(jsdict data, var groups = undefined)
DelegateModel 내의 index 에, DelegateModel::model 에 할당된 모델의 역할에 해당하는 data 의 값을 사용하여 새 항목을 생성합니다.
인덱스가 지정되지 않은 경우 데이터는 모델에 추가됩니다.
선택적 매개변수인 groups 는 새 항목이 속해야 할 그룹을 지정하며, 지정되지 않은 경우 삽입 호출이 이루어진 그룹과 동일하게 처리됩니다.
DelegateModel 에 삽입된 데이터는 나중에 resolve() 함수를 사용하여 DelegateModel::model 의 기존 항목과 병합할 수 있습니다. 이를 통해 나중에 실제 데이터로 대체될 자리 표시자 항목을 생성하는 데 사용할 수 있습니다.
void move(var from, var to, int count)
from 에 있는 count 을 그룹 to 내에서 새로운 위치로 이동시킵니다.
참고: DelegateModel 는 프록시 모델 역할을 합니다. 즉, underlying model 에 있는 델리게이트들과는 다른 순서로 델리게이트들을 보유합니다. 기본 모델에 이후에 이루어지는 변경 사항들은 이 함수를 통해 수행한 순서 변경을 되돌리지 않습니다.
void remove(int index, int count)
index 부터 시작하는 ' count ' 항목을 그룹에서 제거합니다.
void removeGroups(int index, int count, list<string> groups)
groups 에서 index 부터 시작하는 ‘ count ’ 항목을 제거합니다.
void resolve(int from, int to)
from 에 있는 미해결 항목을 DelegateModel::model 의 인덱스 to 에 있는 항목에 바인딩합니다.
해결되지 않은 항목은 DelegateModel::model 인덱스에서 파생된 것이 아니라 inserted 를 통해 DelegateModelGroup 에 데이터가 입력된 항목입니다. 항목을 해결하면 대상 인덱스에 있는 항목이 해결되지 않은 항목으로 대체됩니다. 해결된 항목은 바인딩된 인덱스에서 소스 모델의 데이터를 반영하며, 다른 항목과 마찬가지로 해당 인덱스가 이동할 때 함께 이동합니다.
DelegateModelGroup 의 onChanged() 핸들러에서 새 항목이 대체되는 경우, 해당 삽입 및 대체 작업은 원자적 작업으로 뷰에 전달되어 모델 내용이 변경되지 않은 것처럼 보이게 하거나, 미해결 항목과 모델 항목이 인접하지 않은 경우 이전의 미해결 항목이 단순히 이동한 것처럼 보이게 합니다.
void setGroups(int index, int count, list<string> groups)
index 부터 시작하는 count 항목의 그룹 구성원 자격을 변경합니다. 해당 항목들은 기존 그룹에서 제거되고 groups 에 추가됩니다.
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.