TreeViewDelegate QML Type
TreeView 에 할당할 수 있는 델리게이트. 더 보기...
| Import Statement: | import QtQuick.Controls |
| Since: | Qt 6.3 |
| Inherits: |
속성
- current : bool
- depth : int
- editing : bool
(since 6.5) - expanded : bool
- hasChildren : bool
- indentation : real
- isTreeNode : bool
- leftMargin : real
- rightMargin : real
- selected : bool
- treeView : TreeView
상세 설명

TreeViewDelegate는 TreeView 의 delegate property 에 할당할 수 있는 델리게이트입니다. 이 델리게이트는 애플리케이션 스타일을 사용하여 뷰에서 트리 및 기타 열을 렌더링합니다.
TreeView {
anchors.fill: parent
delegate: TreeViewDelegate {}
// The model needs to be a QAbstractItemModel
// model: yourTreeModel
}TreeViewDelegate는 ItemDelegate 를 상속받으며, 이는 background, contentItem, indicator 의 세 가지 항목으로 구성되어 있음을 의미합니다. TreeViewDelegate는 트리 내 위치에 따라 contentItem과 indicator를 indenting 처리합니다. indicator는 델리게이트 항목이 tree column 내에 있을 때만 표시되며, 모델 항목 with children 을 렌더링합니다.
인디케이터를 변경하면 기본적으로 더 이상 들여쓰기가 적용되지 않습니다. 대신 depth 및 indentation 를 고려하여 인디케이터의 x position 를 직접 설정하여 들여쓰기를 적용해야 합니다. 다음은 이를 수행하는 방법의 예시입니다:
TreeViewDelegate {
indicator: Item {
x: leftMargin + (depth * indentation)
}
}contentItem의 위치는 padding 로 제어됩니다. 즉, 들여쓰기를 따로 신경 쓰지 않고도 contentItem을 변경할 수 있습니다. 하지만 이는 패딩(padding)을 다른 값으로 변경하면 들여쓰기가 사라지므로, 패딩 변경은 피해야 함을 의미합니다. 반면, 인디케이터 왼쪽의 간격은 ` leftMargin`로 제어됩니다. 인디케이터와 contentItem 사이의 간격은 ` spacing`로 제어되며, contentItem 오른쪽의 간격은 ` rightMargin`로 제어됩니다.
포인터와의 상호작용
TreeViewDelegate는 ItemDelegate 를 상속받습니다. 즉, 사용자가 델리게이트를 클릭하면 clicked 와 같은 신호가 발생합니다. 필요한 경우, 해당 신호에 연결하여 기본 확장/축소 동작 외에도 애플리케이션별 기능을 구현할 수 있습니다(심지어 pointerNavigationEnabled 를 false 로 설정하여 기본 동작을 비활성화할 수도 있습니다).
하지만 ItemDelegate API는 클릭 위치나 누르고 있는 수정 키에 대한 정보를 제공하지 않습니다. 이러한 정보가 필요한 경우, 포인터 핸들러를 사용하는 것이 더 나은 방법입니다. 예를 들면 다음과 같습니다.
TreeView {
id: treeView
delegate: TreeViewDelegate {
TapHandler {
acceptedButtons: Qt.RightButton
onTapped: someContextMenu.open()
}
TapHandler {
acceptedModifiers: Qt.ControlModifier
onTapped: {
if (treeView.isExpanded(row))
treeView.collapseRecursively(row)
else
treeView.expandRecursively(row)
}
}
}
}참고: 사용자가 델리게이트를 클릭했을 때 발생하는 기본 동작(예: 현재 인덱스 변경)을비활성화하려면 ` pointerNavigationEnabled `를 ` false`로 설정하면 됩니다.
트리 내 노드 편집
TreeViewDelegate에는 기본 edit delegate 가 할당되어 있습니다. TreeView 에 edit triggers 가 설정되어 있고, model 가 editing model items 를 지원하는 경우, 사용자는 편집 트리거 중 하나를 활성화하여 current 트리 노드의 텍스트를 편집할 수 있습니다.
기본 편집 델리게이트는 Qt.EditRole 를 사용하여 model 에 데이터를 읽고 쓰려고 시도합니다. QAbstractItemModel::data()가 이 역할에 대해 빈 문자열을 반환하면, 대신 Qt.DisplayRole 가 사용됩니다.
기본 편집 델리게이트가 제공하는 기능 이외의 기능이 필요한 경우, 언제든지 TableView.editDelegate 에 사용자 정의 편집 델리게이트를 할당할 수 있습니다.
TreeView도 참조하십시오 .
속성 문서
current : bool
이 속성은 델리게이트가 ` selection model`에서 ` current index `를 나타내는 경우에 성립합니다.
depth : int
이 속성은 델리게이트가 그린 모델 항목의 깊이를 나타냅니다. 모델 항목의 깊이는 모델 내에서 해당 항목의 상위 항목 수와 동일합니다.
editing : bool [since 6.5]
이 속성은 델리게이트가 edited.
이 속성은 Qt 6.5에서 도입되었습니다.
expanded : bool
델리게이트가 그린 모델 항목이 뷰에서 확장된 경우, 이 속성은 ` true `입니다.
hasChildren : bool
델리게이트가 그린 모델 항목에 모델 내 자식 항목이 있는 경우, 이 속성은 ` true `입니다.
indentation : real
이 속성은 자식 요소가 부모 요소에 대해 수평 방향으로 들여쓰기된 간격을 나타냅니다.
isTreeNode : bool
이 속성은 델리게이트 항목이 트리 내에 노드를 그릴 때 true 입니다. 트리를 그리는 데는 뷰의 한 열만 사용되므로, 해당 열에 있는 델리게이트 항목에 대해서만 이 속성이 true 로 설정됩니다.
트리 내의 노드는 해당 노드의 ` depth` 값에 따라 ` indented ` 상태를 가지며, ` hasChildren `가 ` true`인 경우 ` indicator `을 표시합니다. 다른 열에 있는 델리게이트 항목의 경우 이 속성은 ` false`로 설정됩니다.
leftMargin : real
이 속성은 (들여쓰기 외에도) 뷰의 왼쪽 가장자리와 표시기의 왼쪽 가장자리 사이의 간격을 지정합니다. 표시기가 보이지 않는 경우, 이 간격은 뷰의 왼쪽 가장자리와 콘텐츠 항목의 왼쪽 가장자리 사이에 적용됩니다.
rightMargin, indentation 및 spacing도 참조하십시오 .
rightMargin : real
이 속성은 뷰의 오른쪽 가장자리와 콘텐츠 항목의 오른쪽 가장자리 사이의 간격을 나타냅니다.
leftMargin, indentation 및 spacing도 참조하십시오 .
selected : bool
이 속성은 델리게이트가 ` selection model`에서 ` selected index `를 나타내는 경우 성립합니다.
treeView : TreeView
이 속성은 델리게이트 항목을 포함하는 TreeView 을 가리킵니다.
© 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.