TreeViewDelegate QML Type

TreeView...에 할당할 수 있는 위임인.. . 더보기...

Import Statement: import QtQuick.Controls
Since: Qt 6.3
Inherits:

ItemDelegate

속성

자세한 설명

트리뷰디엘리게이트는 TreeViewdelegate property 에 할당할 수 있는 델리게이트로, 애플리케이션 스타일을 사용하여 뷰에서 트리와 다른 열을 렌더링합니다.

TreeView {
    anchors.fill: parent
    delegate: TreeViewDelegate {}
    // The model needs to be a QAbstractItemModel
    // model: yourTreeModel
}

TreeViewDelegate는 ItemDelegate 을 상속하므로 background, contentItem, indicator 의 세 가지 항목으로 구성됩니다. TreeViewDelegate는 트리 내 위치에 따라 indenting 콘텐츠 항목과 표시기를 처리합니다. 인디케이터는 델리게이트 항목이 tree column 안에 있는 경우에만 표시되며, 모델 항목 with children 을 렌더링합니다.

표시기를 변경하면 기본적으로 더 이상 들여쓰기가 되지 않습니다. 대신 depthindentation 을 고려하여 표시기의 x position 을 설정하여 직접 들여쓰기해야 합니다. 아래는 이를 수행하는 방법의 예입니다:

TreeViewDelegate {
    indicator: Item {
        x: leftMargin + (depth * indentation)
    }
}

contentItem의 위치는 padding 로 제어합니다. 즉, 들여쓰기를 처리하지 않고도 contentItem을 변경할 수 있습니다. 그러나 패딩을 다른 것으로 변경하면 들여쓰기가 제거되므로 변경하지 않아야 한다는 의미이기도 합니다. 대신 표시기 왼쪽의 공간은 leftMargin 으로 제어합니다. 표시기와 콘텐츠 항목 사이의 공간은 spacing 으로 제어합니다. 그리고 contentItem의 오른쪽 공간은 rightMargin 으로 제어됩니다.

포인터와 상호 작용하기

TreeViewDelegate는 ItemDelegate 를 상속합니다. 즉, 사용자가 델리게이트를 클릭할 때 clicked 와 같은 신호를 내보냅니다. 필요한 경우 해당 신호에 연결하여 기본 확장/축소 동작 외에 애플리케이션별 기능을 구현할 수 있습니다( pointerNavigationEnabledfalse 으로 설정하여 기본 동작을 비활성화할 수도 있습니다).

하지만 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)
            }
        }
    }
}

참고: 사용자가 델리게이트를 클릭할 때 발생하는 기본 동작(예: 현재 인덱스 변경)을 비활성화하려면 pointerNavigationEnabledfalse 으로 설정하면 됩니다.

트리에서 노드 편집하기

트리뷰 델리게이트에는 기본값 edit delegate 이 할당되어 있습니다. TreeViewedit triggers 이 설정되어 있고 modelediting 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 이며, hasChildrentrue 인 경우 indicator 을 표시합니다. 다른 열의 델리게이트 항목은 이 속성이 false 로 설정됩니다.


leftMargin : real

이 속성은 뷰의 왼쪽 가장자리와 표시기의 왼쪽 가장자리 사이의 공백을 유지합니다(들여쓰기와 더불어). 표시기가 표시되지 않으면 뷰의 왼쪽 가장자리와 콘텐츠 항목의 왼쪽 가장자리 사이에 공백이 생깁니다.

rightMargin, indentation, spacing참조하십시오 .


rightMargin : real

이 속성은 뷰의 오른쪽 가장자리와 contentItem의 오른쪽 가장자리 사이의 공간을 유지합니다.

leftMargin, indentation, 및 spacing도 참조하십시오 .


selected : bool

이 속성은 델리게이트가 selection model 에서 selected index 을 나타내는 경우 보유합니다.


treeView : TreeView

이 속성은 델리게이트 항목이 포함된 TreeView 을 가리킵니다.


© 2025 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.