QML
← 전체 컴포넌트

Breadcrumb

현재 페이지까지의 경로를 보여 주고 상위 단계로 이동할 수 있게 합니다.

import Syidax.Core.Breadcrumb

지원 QML 타입

타입정의 / 역할
현재 위치의 경로 항목과 구분자를 배치하는 컨테이너입니다.
SyBreadcrumb 경로 안의 이름과 이동 대상을 나타내는 항목입니다.

예제로 보기

미리보기는 Qt 실행 화면의 이미지입니다. 아래 버튼으로 결과를 전환하세요.

01 기본 구성

SyBreadcrumb는 현재 페이지까지의 경로를 보여 줍니다: 안에 선언한 SyBreadcrumbItem 단계들이 한 줄로 놓이고, 사이에 구분자가 있으며, 마지막 뒤에는 없습니다.

Qt 실행 화면 · 이미지
기본 구성 · 기본
기본 실행 화면
QML 코드
import QtQuick
import Syidax.Core

Item {
    component EventLog: Rectangle {
        id: logBox
        property var lines: []
        implicitWidth: 440
        implicitHeight: Math.max(56, logText.implicitHeight + 24)
        radius: 4; color: Theme.semantic.backgroundBold
        function log(value) { lines = lines.slice(-3).concat([String(value)]) }
        Text {
            id: logText; x: 12; y: 12; width: parent.width - 24
            text: logBox.lines.length ? logBox.lines.join("\n") : "컨트롤을 조작하면 이벤트 결과가 표시됩니다."
            wrapMode: Text.Wrap; color: Theme.semantic.textDefault
            font.family: Theme.monoFontFamily; font.pixelSize: 12
        }
    }

    implicitWidth: Math.max(360, childrenRect.width)
    implicitHeight: childrenRect.height
    id: story

    property QtObject settings: QtObject {
        id: storyArgs
        property string separator: "slash"
    }

    

    Column {
        spacing: 12
        SyBreadcrumb {
            separator: storyArgs.separator
            onSelected: (index) => output.log(("선택: %1").arg(index))
            SyBreadcrumbItem { text: "홈" }
            SyBreadcrumbItem { text: "보고서" }
            SyBreadcrumbItem { text: "3분기"; active: true }
        }
        EventLog { id: output }
    }

}

02 separator

SyBreadcrumb의 separator는 마지막을 제외한 모든 단계 뒤에 그려지는 글리프를 고릅니다: "slash"(기본) 또는 "arrow".

Qt 실행 화면 · 이미지
separator · 기본
기본 실행 화면
QML 코드
import QtQuick
import Syidax.Core

Item {
    implicitWidth: Math.max(360, childrenRect.width)
    implicitHeight: childrenRect.height
    readonly property string items: [
        "SyBreadcrumbItem { text: " + JSON.stringify("홈") + " }",
        "SyBreadcrumbItem { text: " + JSON.stringify("보고서") + " }",
        "SyBreadcrumbItem { text: " + JSON.stringify("3분기") + "; active: true }"
    ].join("\n")

    Column {
        spacing: 12
        SyBreadcrumb {
            SyBreadcrumbItem { text: "홈" }
            SyBreadcrumbItem { text: "보고서" }
            SyBreadcrumbItem { text: "3분기"; active: true }
        }
        SyBreadcrumb {
            separator: "arrow"
            SyBreadcrumbItem { text: "홈" }
            SyBreadcrumbItem { text: "보고서" }
            SyBreadcrumbItem { text: "3분기"; active: true }
        }
    }
}

03 active · disabled

active: true는 현재 페이지를 표시합니다: 항목이 현재 페이지 색으로 그려지고, 클릭할 수 없으며, 키보드 포커스를 받지 않고, selected를 절대 발생시키지 않습니다.

Qt 실행 화면 · 이미지
active · disabled · 기본
QML 코드
import QtQuick
import Syidax.Core

Item {
    implicitWidth: Math.max(360, childrenRect.width)
    implicitHeight: childrenRect.height
    // Focused Gallery routes: keep only the selected API and its prerequisites.
    id: featureStory

    property QtObject settings: QtObject {
        id: storyArgs
        property bool disabled: true
    }

    

    SyBreadcrumb {
        SyBreadcrumbItem { text: "홈" }
        SyBreadcrumbItem { id: featureTarget0; text: "보고서"; disabled: storyArgs.disabled }
        SyBreadcrumbItem { id: featureTarget1; text: "3분기"; active: true }
    }
}

04 selected

클릭은 두 시그널로, 이 순서로 보고됩니다: 항목의 selected()(인자 없음), 그다음 브레드크럼의 selected(index: int).

Qt 실행 화면 · 이미지
selected · 기본
기본 실행 화면
QML 코드
import QtQuick
import Syidax.Core

Item {
    component EventLog: Rectangle {
        id: logBox
        property var lines: []
        implicitWidth: 440
        implicitHeight: Math.max(56, logText.implicitHeight + 24)
        radius: 4; color: Theme.semantic.backgroundBold
        function log(value) { lines = lines.slice(-3).concat([String(value)]) }
        Text {
            id: logText; x: 12; y: 12; width: parent.width - 24
            text: logBox.lines.length ? logBox.lines.join("\n") : "컨트롤을 조작하면 이벤트 결과가 표시됩니다."
            wrapMode: Text.Wrap; color: Theme.semantic.textDefault
            font.family: Theme.monoFontFamily; font.pixelSize: 12
        }
    }

    implicitWidth: Math.max(360, childrenRect.width)
    implicitHeight: childrenRect.height

    

    Column {
        spacing: 12
        SyBreadcrumb {
            id: path
            onSelected: (index) => {
                output.log(("선택: %1 · %2").arg(index).arg(path.items[index].text))
                for (let i = 0; i < path.items.length; i += 1) path.items[i].active = i === index
            }
            SyBreadcrumbItem { text: "홈"; onSelected: output.log(("%1 클릭").arg("홈")) }
            SyBreadcrumbItem { text: "보고서" }
            SyBreadcrumbItem { text: "3분기"; active: true }
        }
        EventLog { id: output }
    }
}

05 화살표 경로 구분

separator 설정을 적용한 화살표 경로 구분 예제입니다.

Qt 실행 화면 · 이미지
화살표 경로 구분 · 실행 결과
기본 실행 화면
QML 코드
import QtQuick
import Syidax.Core

Item {
    component EventLog: Rectangle {
        id: logBox
        property var lines: []
        implicitWidth: 440
        implicitHeight: Math.max(56, logText.implicitHeight + 24)
        radius: 4; color: Theme.semantic.backgroundBold
        function log(value) { lines = lines.slice(-3).concat([String(value)]) }
        Text {
            id: logText; x: 12; y: 12; width: parent.width - 24
            text: logBox.lines.length ? logBox.lines.join("\n") : "컨트롤을 조작하면 이벤트 결과가 표시됩니다."
            wrapMode: Text.Wrap; color: Theme.semantic.textDefault
            font.family: Theme.monoFontFamily; font.pixelSize: 12
        }
    }

    implicitWidth: Math.max(360, childrenRect.width)
    implicitHeight: childrenRect.height
    id: story

    property QtObject settings: QtObject {
        id: storyArgs
        property string separator: "arrow"
    }

    

    Column {
        spacing: 12
        SyBreadcrumb {
            separator: storyArgs.separator
            onSelected: (index) => output.log(("선택: %1").arg(index))
            SyBreadcrumbItem { text: "홈" }
            SyBreadcrumbItem { text: "보고서" }
            SyBreadcrumbItem { text: "3분기"; active: true }
        }
        EventLog { id: output }
    }

}

06 슬래시 경로 구분

separator 설정을 적용한 슬래시 경로 구분 예제입니다.

Qt 실행 화면 · 이미지
슬래시 경로 구분 · 실행 결과
기본 실행 화면
QML 코드
import QtQuick
import Syidax.Core

Item {
    component EventLog: Rectangle {
        id: logBox
        property var lines: []
        implicitWidth: 440
        implicitHeight: Math.max(56, logText.implicitHeight + 24)
        radius: 4; color: Theme.semantic.backgroundBold
        function log(value) { lines = lines.slice(-3).concat([String(value)]) }
        Text {
            id: logText; x: 12; y: 12; width: parent.width - 24
            text: logBox.lines.length ? logBox.lines.join("\n") : "컨트롤을 조작하면 이벤트 결과가 표시됩니다."
            wrapMode: Text.Wrap; color: Theme.semantic.textDefault
            font.family: Theme.monoFontFamily; font.pixelSize: 12
        }
    }

    implicitWidth: Math.max(360, childrenRect.width)
    implicitHeight: childrenRect.height
    id: story

    property QtObject settings: QtObject {
        id: storyArgs
        property string separator: "slash"
    }

    

    Column {
        spacing: 12
        SyBreadcrumb {
            separator: storyArgs.separator
            onSelected: (index) => output.log(("선택: %1").arg(index))
            SyBreadcrumbItem { text: "홈" }
            SyBreadcrumbItem { text: "보고서" }
            SyBreadcrumbItem { text: "3분기"; active: true }
        }
        EventLog { id: output }
    }

}

API 25

항목을 가리키거나 선택하면 QML 예제와 복사 버튼이 나타납니다.

속성 · SyBreadcrumb

속성타입기본값설명
list (기본 속성)—SyBreadcrumbItem 단계들, 순서대로
string"slash""slash" · "arrow", 모든 항목에 전달; 항목 자신의 separator가 우선
list (읽기 전용)—안의 항목들, 순서대로(selected(index)가 가리키는 것)

속성 · SyBreadcrumbItem

속성타입기본값설명
string""단계 라벨
boolfalse현재 페이지: 현재 색, 클릭 불가, 포커스 불가
boolfalse60 %로 흐림, 클릭 불가, 포커스 불가
string""이 항목 뒤 글리프의 "slash" · "arrow"; 비면 브레드크럼의 값
string"slash"브레드크럼이 설정: 물려받은 구분자
boolfalse이 항목 뒤에 글리프 없음
bool (읽기 전용)—active도 disabled도 아님
string (읽기 전용)—이 항목에 실제 적용되는 구분자

메서드

메서드설명
클릭처럼 selected 발생; 항목이 active나 disabled면 무시

시그널

시그널인자시점
index: int상호작용 가능한 항목이 클릭됨, 또는 포커스된 상태에서 Enter / Space; index는 0부터의 위치
—이 항목이 클릭됨(또는 Enter / Space); 브레드크럼의 것 직전에 발생. active나 disabled 항목에서는 절대 아님

동작

항목동작 / 조건
단계 라벨
브레드크럼은 모든 항목에 구분자(parentSeparator)를 넘기고 마지막 항목에 마지막임(isLast)을 알립니다.
브레드크럼은 모든 항목에 구분자(parentSeparator)를 넘기고 마지막 항목에 마지막임(isLast)을 알립니다.
이 항목 뒤 글리프의 "slash" · "arrow"; 비면 브레드크럼의 값
"slash" · "arrow", 모든 항목에 전달; 항목 자신의 separator가 우선
현재 페이지: 현재 색, 클릭 불가, 포커스 불가
60 %로 흐림, 클릭 불가, 포커스 불가
이 항목이 클릭됨(또는 Enter / Space); 브레드크럼의 것 직전에 발생. active나 disabled 항목에서는 절대 아님
상호작용 가능한 항목은 Tab 순서에 들어가고 포커스 동안 1 px 외곽선을 보입니다. Enter와 Space는 클릭처럼 동작합니다.
브레드크럼의 암시 크기는 항목들의 행(22 px 높이)입니다. 레이아웃에 두거나 앵커하십시오.

키보드

항목동작 / 조건
SyNav는 갈 곳을 나열하고, SySteps는 과정의 진행을 보여 주며, SyGlobalHeader 아래가 브레드크럼이 흔히 놓이는 자리입니다.