State QML Type

개체 및 속성의 구성을 정의합니다. 자세히...

Import Statement: import QtQuick

속성

상세 설명

상태는 기본 구성에서 일괄적으로 변경된 집합입니다.

모든 항목에는 개체 및 속성 값의 기본 구성을 정의하는 기본 상태가 있습니다. states 속성에 상태 항목을 추가하여 새 상태를 정의하면 항목이 서로 다른 구성 간에 전환할 수 있습니다. 예를 들어 이러한 구성을 사용하여 다른 속성 값 집합을 적용하거나 다른 스크립트를 실행할 수 있습니다.

다음 예는 단일 Rectangle 을 표시합니다. 기본 상태에서는 사각형이 검은색으로 표시됩니다. "클릭" 상태에서는 PropertyChanges 개체가 사각형의 색상을 빨간색으로 변경합니다. MouseArea 내부를 클릭하면 사각형의 상태가 기본 상태와 "클릭됨" 상태 간에 전환되므로 사각형의 색상이 검은색과 빨간색 간에 전환됩니다.

import QtQuick

Rectangle {
    id: myRect
    width: 100; height: 100
    color: "black"

    MouseArea {
        id: mouseArea
        anchors.fill: parent
        onClicked: myRect.state == 'clicked' ? myRect.state = "" : myRect.state = 'clicked';
    }

    states: [
        State {
            name: "clicked"
            PropertyChanges { target: myRect; color: "red" }
        }
    ]
}

기본 상태는 빈 문자열("")을 사용하여 참조된다는 점에 유의하세요.

상태는 일반적으로 상태 변경 시 애니메이션을 제공하기 위해 트랜지션과 함께 사용됩니다.

참고: 동일한 객체의 다른 상태 내에서 객체의 상태를 설정하는 것은 허용되지 않습니다.

상태 예제, Qt Quick 상태, 트랜지션Qt Qml.

속성 문서

changes : list<Change> [default]

이 프로퍼티에는 이 상태에 적용할 변경 사항이 저장됩니다.

기본적으로 이러한 변경 사항은 기본 상태에 대해 적용됩니다. 상태가 다른 상태를 확장하는 경우에는 확장되는 상태에 대해 변경 사항이 적용됩니다.


extend : string

이 속성은 이 상태가 확장하는 상태를 보유합니다.

상태가 다른 상태를 확장하면 해당 상태의 모든 변경 사항을 상속합니다.

확장되는 상태는 확장되는 상태가 지정한 변경 사항과 관련하여 기본 상태로 취급됩니다.


name : string

이 속성은 상태의 이름을 보유합니다.

각 상태는 해당 항목 내에서 고유한 이름을 가져야 합니다.


when : bool

이 속성은 상태를 적용해야 하는 시기를 보유합니다.

상태를 적용하려면 true 로 평가되는 표현식으로 설정해야 합니다. 예를 들어 다음 RectangleMouseArea 을 누르면 "숨김" 상태로 변경됩니다:

Rectangle {
    id: myRect
    width: 100; height: 100
    color: "red"

    MouseArea { id: mouseArea; anchors.fill: parent }

    states: State {
        name: "hidden"; when: mouseArea.pressed
        PropertyChanges { target: myRect; opacity: 0 }
    }
}

한 그룹의 여러 상태에 동시에 true 으로 평가되는 when 절이 있는 경우 가장 먼저 일치하는 상태가 적용됩니다. 예를 들어 다음 스니펫에서 sharedCondition이 true 이 되면 항상 state2 이 아닌 state1 이 선택됩니다.

Item {
    states: [
        State { name: "state1"; when: sharedCondition },
        State { name: "state2"; when: sharedCondition }
    ]
    // ...
}

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