노드를 targetValue의 앞 / 뒤 / 안으로 옮기고("before" · "after" · "into"; into는 대상도 펼침) 커밋한 뒤 nodeMoved를 냄. true 반환. 노드를 모르거나 대상이 옮기는 하위 트리 안에 있으면 false를 반환하고 아무 일도 하지 않음.
추가 행이 비어 있지 않은 라벨로 확정되거나 addChild() 실행 — manualAdd여도.
detail: { value, label }
새롭고 비어 있지 않은 라벨로 이름 바꾸기가 확정되거나 editNode() 실행.
detail: { value, label }
×가 눌리거나 removeNode() 실행 — manualRemove여도.
detail: { value, label, targetValue, position }
놓기가 끝났거나 moveNode()가 실행되어 노드가 targetValue의 앞 / 뒤 / 안으로 옮겨짐.
—
nodes가 새 배열을 담음(트리가 만든 모든 변화 뒤, 그리고 직접 대입할 때).
시그널
항목
동작 / 조건
행(SyTreeItem)은 expandChanged, checkChanged, itemSelected, itemAdded, itemRemoved, itemEdited를 같은 모양으로 자기 몫으로 트리보다 먼저 냅니다.
행(SyTreeItem)은 expandChanged, checkChanged, itemSelected, itemAdded, itemRemoved, itemEdited를 같은 모양으로 자기 몫으로 트리보다 먼저 냅니다.
행(SyTreeItem)은 expandChanged, checkChanged, itemSelected, itemAdded, itemRemoved, itemEdited를 같은 모양으로 자기 몫으로 트리보다 먼저 냅니다.
행(SyTreeItem)은 expandChanged, checkChanged, itemSelected, itemAdded, itemRemoved, itemEdited를 같은 모양으로 자기 몫으로 트리보다 먼저 냅니다. 행의 itemAdded.childValue는 ""입니다.
행(SyTreeItem)은 expandChanged, checkChanged, itemSelected, itemAdded, itemRemoved, itemEdited를 같은 모양으로 자기 몫으로 트리보다 먼저 냅니다.
행(SyTreeItem)은 expandChanged, checkChanged, itemSelected, itemAdded, itemRemoved, itemEdited를 같은 모양으로 자기 몫으로 트리보다 먼저 냅니다.
순서대로의 보이는 행: { node, level, last, parentValue, ancestors }.
행이 그리는 노드 객체.
+ 버튼과 addChild()가 itemAdded만 냅니다. 모델은 앱에 맡깁니다.
× 버튼과 removeNode()가 itemRemoved만 냅니다.
캐럿을 보이고 expanded가 아닌 노드의 자식을 숨깁니다. 꺼져 있으면 모든 노드가 보입니다.
라벨에 글자가 들어 있는 가지만(대소문자 무시) 남기고, 열고, 일치 부분을 굵게 합니다.
rows는 보이는 행의 목록으로, nodes, expandable, searchTerm이 바뀔 때마다 다시 만들어집니다: { node, level, last, parentValue, ancestors }.
rows는 보이는 행의 목록으로, nodes, expandable, searchTerm이 바뀔 때마다 다시 만들어집니다: { node, level, last, parentValue, ancestors }.
rows는 보이는 행의 목록으로, nodes, expandable, searchTerm이 바뀔 때마다 다시 만들어집니다: { node, level, last, parentValue, ancestors }. expandable: false면 모든 노드가 보이고 expanded는 무시됩니다.
expandable: false면 모든 노드가 보이고 expanded는 무시됩니다. 켜져 있으면 조상이 모두 expanded인 노드만 보이고, 자식이 있는 노드는 캐럿을 얻습니다. expandAll은 모델을 다시 씁니다: true는 자식이 있는 모든 노드에 expanded: true를, false는 모두 false를 넣습니다(완료 시점과 값이 바뀔 때마다 적용). 검색어가 있는 동안 남은 가지는 expanded와 무관하게 모두 열리고, 각 라벨의 첫 일치 부분이 굵게 그려집니다. 캐럿, 행 더블클릭, 포커스된 행의 Right / Left, 그리고 expandNode / collapseNode / toggleExpand는 모두 같은 경로를 지납니다: 노드의 expanded가 뒤집히고, 모델이 커밋되고, expandChanged가 발생합니다.
자식이 있는 모든 노드의 expanded를 다시 씁니다 — true는 모두 열고 false는 모두 닫습니다 — 완료 시점과 값이 바뀔 때마다.
하위 트리를 체크하고, 조상을 다시 계산하고, 커밋하고 itemChecked를 냄. checkable과 disabled에 무관하게 동작.
체크 박스가 노드를 토글하면 setChecked가 하위 트리 전체에 checked를 쓰고 모든 조상을 다시 계산합니다: 자식 전부 체크 → 체크, 일부 체크 또는 indeterminate → indeterminate, 없음 → 해제. 데이터의 초기 checked 플래그는 그대로 그려집니다(첫 토글 전까지 트리는 정규화하지 않습니다).
체크 박스가 노드를 토글하면 setChecked가 하위 트리 전체에 checked를 쓰고 모든 조상을 다시 계산합니다: 자식 전부 체크 → 체크, 일부 체크 또는 indeterminate → indeterminate, 없음 → 해제.
행의 박스가 토글됨(클릭, Space) 또는 setChecked() 실행. 조작한 노드와 새 상태를 알림.
클릭(또는 Return)이 행을 선택합니다: selectedValue + itemSelected. 노드가 자기 clickable을 가질 수도 있습니다.
존재하는 노드에 대해 selectedValue를 설정하고 itemSelected를 냄. clickable / disabled 무관.
코드의 select(value)는 clickable과 disabled 관문을 건너뜁니다. (disabled: true)는 흐려지고 호버, 클릭, 포커스, 캐럿, 박스, 동작 버튼을 받지 않습니다.
캐럿, 행 더블클릭, 포커스된 행의 Right / Left, 그리고 expandNode / collapseNode / toggleExpand는 모두 같은 경로를 지납니다: 노드의 expanded가 뒤집히고, 모델이 커밋되고, expandChanged가 발생합니다.
캐럿, 행 더블클릭, 포커스된 행의 Right / Left, 그리고 expandNode / collapseNode / toggleExpand는 모두 같은 경로를 지납니다: 노드의 expanded가 뒤집히고, 모델이 커밋되고, expandChanged가 발생합니다.
캐럿, 행 더블클릭, 포커스된 행의 Right / Left, 그리고 expandNode / collapseNode / toggleExpand는 모두 같은 경로를 지납니다: 노드의 expanded가 뒤집히고, 모델이 커밋되고, expandChanged가 발생합니다.
캐럿, 행 더블클릭, 포커스된 행의 Right / Left, 그리고 expandNode / collapseNode / toggleExpand는 모두 같은 경로를 지납니다: 노드의 expanded가 뒤집히고, 모델이 커밋되고, expandChanged가 발생합니다.
모든 노드(fixed 제외)가 제자리 이름 바꾸기 연필 버튼을 얻습니다.
연필(트리 또는 노드의 editable, fixed에는 절대 없음), +(노드의 appendable), ×(노드의 removable, fixed에는 절대 없음)는 행이 호버되고 노드가 비활성이 아닐 때 나타납니다.
연필(트리 또는 노드의 editable, fixed에는 절대 없음), +(노드의 appendable), ×(노드의 removable, fixed에는 절대 없음)는 행이 호버되고 노드가 비활성이 아닐 때 나타납니다. 함수 editNode / removeNode / addChild는 editable, removable, fixed의 제한을 받지 않습니다.
추가 행의 플레이스홀더.
추가 행이 비어 있지 않은 라벨로 확정되거나 addChild() 실행 — manualAdd여도.
{ value: parentValue + "-" + n, label, children: [] }를 추가하고, 부모를 펼치고, itemAdded를 냄. 자식을 반환(부모가 없으면 null). manualAdd면 알리고 반환만.
행을 서로의 위로 끌 수 있음: 대상의 앞 / 뒤 / 안. 놓으면 moveNode()가 호출되고 nodeMoved가 알림.
행을 다른 행 위로 끄는 동안의 { value, target, position }(position은 "before" · "after" · "into").
끄는 동안 대상의 위나 아래의 선, 또는 둘레의 틀이 놓일 자리를 보여 주고, dragState는 { value, target, position }("before" · "after" · "into"; 아니면 null)입니다. 놓으면 moveNode(value, targetValue, position)가 호출되며 코드에서도 부를 수 있습니다: 어느 한 노드를 모르거나 대상이 옮기는 하위 트리 안에 있으면 false를 반환하고 아무 일도 하지 않으며, 아니면 변화를 커밋하고(nodes가 새 배열을 담음) nodeMoved({ value, label, targetValue, position })를 냅니다.
노드를 targetValue의 앞 / 뒤 / 안으로 옮기고("before" · "after" · "into"; into는 대상도 펼침) 커밋한 뒤 nodeMoved를 냄. true 반환. 노드를 모르거나 대상이 옮기는 하위 트리 안에 있으면 false를 반환하고 아무 일도 하지 않음.
놓기가 끝났거나 moveNode()가 실행되어 노드가 targetValue의 앞 / 뒤 / 안으로 옮겨짐.
행을 서로의 위로 끌 수 있음: 대상의 앞 / 뒤 / 안. 놓으면 moveNode()가 호출되고 nodeMoved가 알림.
노드를 targetValue의 앞 / 뒤 / 안으로 옮기고("before" · "after" · "into"; into는 대상도 펼침) 커밋한 뒤 nodeMoved를 냄. true 반환. 노드를 모르거나 대상이 옮기는 하위 트리 안에 있으면 false를 반환하고 아무 일도 하지 않음.
Web API 대응
항목
동작 / 조건
이름 별칭이 아닌 QML 모델 계약입니다. setChecked는 하위 체크와 상위 부분 체크를 계산합니다. selectedValue 직접 초기화는 itemSelected를 만들지 않습니다. manualAdd/manualRemove에서는 요청 신호만 발생하며 호스트가 nodes를 새 배열로 교체해야 완료됩니다.
모델의 표시 행이 100개 이상이면 화면에 필요한 행만 렌더링합니다. 높이를 지정하면 스크롤할 수 있습니다. scrollTo(value)로 해당 행을 보이게 하고 item(value)로 접근하세요. 화면 밖 행은 null입니다. 위·아래 키로 포커스를 옮기며 자동 스크롤합니다. 인라인 자식 추가를 제공하는 트리는 가변 높이 전체 레이아웃을 유지합니다.