Repeater QML Type
제공된 모델을 사용하여 여러 Item 기반 컴포넌트를 인스턴스화합니다. 더 보기...
| Import Statement: | import QtQuick |
| Inherits: |
속성
- count : int
- delegate : Component
- delegateModelAccess : enumeration
(since 6.10) - model : var
신호
- itemAdded(int index, Item item)
- itemRemoved(int index, Item item)
방법
- Item itemAt(index)
상세 설명
리피터(Repeater) 유형은 유사한 항목을 대량으로 생성하는 데 사용됩니다. 다른 뷰 유형과 마찬가지로, 리피터에는 모델의 데이터( model )와 뷰의 데이터( delegate)가 있으며, 모델의 각 항목에 대해 모델의 데이터가 미리 설정된 컨텍스트에서 델리게이트가 인스턴스화됩니다. 리피터(Repeater) 항목은 일반적으로 Row 이나 Column 과 같은 포지셔너(positioner) 유형으로 감싸져, 리피터가 생성한 여러 델리게이트 항목을 시각적으로 배치합니다.
다음 Repeater는 Row 내에서 Rectangle 항목의 인스턴스 3개를 생성합니다:
import QtQuick
Row {
Repeater {
model: 3
Rectangle {
width: 100; height: 40
border.width: 1
color: "yellow"
}
}
}
리피터의 model 는 지원되는 모든 데이터 모델 중 하나일 수 있습니다. 또한, 다른 뷰의 델리게이트와 마찬가지로 리피터 델리게이트는 리피터 내의 인덱스는 물론 델리게이트와 관련된 모델 데이터에도 액세스할 수 있습니다. 자세한 내용은 delegate 속성 문서를 참조하십시오.
리피터에 의해 인스턴스화된 항목들은 순서대로 리피터의 부모 요소의 자식 요소로 삽입됩니다. 삽입은 부모 스태킹 목록에서 리피터의 위치 바로 뒤에서 시작됩니다. 이를 통해 레이아웃 내에서 리피터를 사용할 수 있습니다. 예를 들어, 다음 리피터의 항목들은 빨간색 사각형과 파란색 사각형 사이에 배치됩니다:
Row {
Rectangle { width: 10; height: 20; color: "red" }
Repeater {
model: 10
Rectangle { width: 20; height: 20; radius: 10; color: "green" }
}
Rectangle { width: 10; height: 20; color: "blue" }
}
참고: Repeater항목은 자신이 인스턴스화한 모든 항목을 소유합니다. Repeater가 생성한 항목을 제거하거나 동적으로 파기하면 예측할 수 없는 동작이 발생할 수 있습니다.
리피터 사용 시 고려 사항
리피터(Repeater) 유형은 리피터가 처음 생성될 때 모든 델리게이트 항목을 생성합니다. 델리게이트 항목의 수가 많고 모든 항목이 동시에 표시될 필요가 없는 경우, 이는 비효율적일 수 있습니다. 이 경우, 스크롤되어 화면에 표시될 때만 델리게이트 항목을 생성하는 ` ListView `와 같은 다른 뷰 유형을 사용하거나, ` Dynamic Object Creation ` 메서드를 사용하여 필요에 따라 항목을 생성하는 것을 고려해 보십시오.
또한, Repeater는 ` Item`를 기반으로 하며, ` Item`에서 파생된 객체만 반복할 수 있다는 점에 유의하십시오. 예를 들어, QtObject를 반복하는 데는 사용할 수 없습니다:
// bad code:
Item {
// Can't repeat QtObject as it doesn't derive from Item.
Repeater {
model: 10
QtObject {}
}
}속성 문서
count : int [read-only]
이 속성은 model 내의 항목 수를 나타냅니다.
count 의 값이 항상 인스턴스화된 delegates 의 개수와 일치하는 것은 아닙니다. 특정 인덱스에 델리게이트가 존재하는지 확인하려면 itemAt()를 사용하십시오. 델리게이트가 인스턴스화되지 않은 경우 null 를 반환합니다.
- Repeater가 델리게이트를 인스턴스화하는 과정(시작 시 또는
model변경으로 인해)에 있는 동안, 생성된 각 델리게이트에 대해 itemAdded 신호가 발산되며, 그 후count속성이 변경됩니다. - 리피터가 완성된 시각적 계층 구조의 일부가 아닌 경우, `
count`는 모델 크기를 반영하지만 델리게이트는 생성되지 않습니다. model의 변경으로 인해 Repeater가 델리게이트를 소멸시키는 경우, 각 델리게이트에 대해 itemRemoved() 신호가 발산되고, 그 후count속성이 변경됩니다.- 리피터가 시각적 계층 구조에서 제거될 경우(예:
parent = null를 설정함으로써), 델리게이트가 소멸되고 각각에 대해 itemRemoved() 신호가 방출되지만,count는 변경되지 않습니다.
itemAt(), itemAdded() 및 itemRemoved()도 참조하십시오 .
delegate : Component [default]
델리게이트는 리피터에 의해 인스턴스화되는 각 항목을 정의하는 템플릿을 제공합니다.
델리게이트에는 리피터 내 델리게이트의 인덱스를 나타내는 읽기 전용 index 속성이 노출됩니다. 예를 들어, 다음 Text 델리게이트는 반복되는 각 항목의 인덱스를 표시합니다:
model 가 문자열 목록이나 객체 목록인 경우, 델리게이트에는 해당 문자열 또는 객체 데이터를 포함하는 읽기 전용 modelData 속성도 제공됩니다. 예를 들어:
|
model 가 모델 객체(예: ListModel)인 경우, 델리게이트는 ListView 와 같은 뷰 클래스에서 델리게이트가 작동하는 방식과 동일하게 모든 모델 역할을 명명된 속성으로 액세스할 수 있습니다.
QML 데이터 모델도 참조하십시오 .
delegateModelAccess : enumeration [since 6.10]
이 속성은 델리게이트가 모델에 액세스할 수 있는 방식을 결정합니다.
| 상수 | 설명 |
|---|---|
DelegateModel.ReadOnly | 델리게이트가 컨텍스트 속성, ` model ` 객체 또는 필수 속성을 통해 모델에 쓰기 작업을 수행하는 것을 금지합니다. |
DelegateModel.ReadWrite | 델리게이트가 컨텍스트 속성, model 개체 또는 필수 속성을 통해 모델에 쓰기 작업을 수행할 수 있도록 허용합니다. |
DelegateModel.Qt5ReadWrite | 델리게이트가 model 객체 및 컨텍스트 속성을 통해 모델에 쓰기 작업을 수행할 수 있도록 허용하지만, 필수 속성을 통한 쓰기 작업은 허용하지 않습니다. |
기본값은 DelegateModel.Qt5ReadWrite 입니다.
이 속성은 Qt 6.10에서 도입되었습니다.
Qt Quick 의 모델 및 뷰 #모델 데이터 변경항목도 참조하십시오 .
model : var
리피터에 데이터를 제공하는 모델입니다.
이 속성은 지원되는 데이터 모델 중 하나로 설정할 수 있습니다:
- 리피터가 생성할 델리게이트의 수를 나타내는 숫자
- 모델(예: ListModel 항목 또는 QAbstractItemModel 의 서브클래스)
- 문자열 목록
- 객체 목록
모델의 유형에 따라 delegate 에 노출되는 속성이 달라집니다.
'데이터 모델'항목도 참조하십시오 .
신호 문서
itemAdded(int index, Item item)
이 신호는 리피터에 항목이 추가될 때 발생합니다. ` index ` 매개변수는 리피터 내에서 해당 항목이 삽입된 인덱스를 나타내며, ` item ` 매개변수는 추가된 ` Item `를 나타냅니다.
참고: 이에 대응하는핸들러는 onItemAdded 입니다.
itemRemoved(int index, Item item)
이 신호는 리피터에서 항목이 제거될 때 발생합니다. ` index ` 매개변수는 리피터에서 항목이 제거된 인덱스를 나타내며, ` item ` 매개변수는 제거된 ` Item `를 나타냅니다.
item 가 이 리피터에 의해 생성된 것이라면, 해당 객체에 대한 참조를 유지하지 마십시오. 이러한 경우 신호가 처리된 직후 해당 객체가 삭제되기 때문입니다.
참고: 해당 핸들러는 onItemRemoved 입니다.
메서드 설명
Item itemAt(index)
지정된 index 에서 생성된 Item 를 반환하거나, index 에 해당 항목이 존재하지 않을 경우 null 를 반환합니다.
© 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.

