StateMachine QML Type
계층적 유한 상태 머신을 제공합니다. 더 보기...
Import Statement: | import QtQml.StateMachine 6.8 |
Inherits: |
속성
- errorString : string
- globalRestorePolicy : enumeration
- running : bool
신호
방법
자세한 설명
StateMachine은 Statecharts의 개념과 표기법을 기반으로 합니다. StateMachine은 Qt State Machine QML API의 일부입니다.
상태 머신은 상태 집합과 상태 간의 전환을 관리하며, 이러한 상태와 전환은 상태 그래프를 정의합니다. 상태 그래프가 구축되면 상태 머신은 이를 실행할 수 있습니다. StateMachine의 실행 알고리즘은 상태 차트 XML(SCXML) 알고리즘을 기반으로 합니다. 프레임워크의 개요는 여러 상태 그래프와 이를 빌드하는 코드를 제공합니다.
머신을 시작하기 전에 initialState 을 설정해야 합니다. 초기 상태는 머신이 시작될 때 머신이 들어가는 상태입니다. 그런 다음 실행 속성을 true 또는 start()로 설정하여 상태 머신을 실행할 수 있습니다. 초기 상태가 되면 시작 신호가 발생합니다.
상태 머신은 최상위 최종 상태가 입력될 때까지 이벤트를 처리하고 전환을 수행하며, 그런 다음 상태 머신은 finished() 신호를 내보냅니다. 상태 머신을 명시적으로 stop()할 수도 있습니다(실행 속성을 false로 설정할 수도 있음). 이 경우 중지된 신호가 전송됩니다.
사용 예
다음 코드 조각은 버튼이 클릭될 때 완료되는 상태 머신을 보여줍니다:
import QtQuick import QtQml.StateMachine as DSM Rectangle { Button { anchors.fill: parent id: button text: "Finish state" DSM.StateMachine { id: stateMachine initialState: state running: true DSM.State { id: state DSM.SignalTransition { targetState: finalState signal: button.clicked } } DSM.FinalState { id: finalState } onFinished: Qt.quit() } } }
오류가 발생하면 머신은 errorState 를 찾아서 사용할 수 있는 경우 이 상태로 들어갑니다. 오류 상태가 입력된 후에는 error()를 사용하여 오류 유형을 검색할 수 있습니다. 오류 상태가 입력되어도 상태 그래프의 실행은 중지되지 않습니다. 오류 상태에 해당하는 오류 상태가 없으면 실행이 중지되고 콘솔에 오류 메시지가 인쇄됩니다.
경고: StateMachine의 childMode를 QState::ExclusiveStates 이외의 다른 값으로 설정하면 잘못된 상태 머신이 생성되어 잘못된 동작이 발생할 수 있습니다.
QAbstractState, State, SignalTransition, TimeoutTransition, HistoryState, Qt State Machine QML 가이드도참조하세요 .
속성 문서
errorString : string |
이 상태 머신의 오류 문자열입니다.
globalRestorePolicy : enumeration |
이 상태 머신의 상태에 대한 복원 정책입니다.
이 프로퍼티의 기본값은 QState.DontRestoreProperties입니다.
이 열거형은 복원 정책 유형을 지정합니다. 복원 정책은 머신이 하나 이상의 속성을 설정하는 상태에 들어갈 때 적용됩니다. 복원 정책이 QState.RestoreProperties로 설정된 경우, 상태 머신은 새 값이 설정되기 전에 속성의 원래 값을 저장합니다.
나중에 머신이 지정된 속성의 값을 설정하지 않는 상태가 되면 속성이 자동으로 초기 값으로 복원됩니다.
특정 프로퍼티에 대해 하나의 초기 값만 저장됩니다. 프로퍼티의 값이 이미 상태 머신에 저장되어 있는 경우 프로퍼티가 성공적으로 복원될 때까지 덮어쓰지 않습니다.
신호 문서
started() |
이 신호는 스테이트 머신이 초기 상태에 진입했을 때 발생합니다(State::initialState).
참고: 해당 핸들러는 onStarted
입니다.
running, start() 및 State::finished도 참조 하세요.
stopped() |
메서드 문서
start() |
이 상태 머신을 시작합니다. 머신이 구성을 재설정하고 초기 상태로 전환합니다. 최종 최상위 상태(FinalState)가 입력되면 머신은 finished() 신호를 내보냅니다.
참고: 상태 머신은 QCoreApplication::exec() 또는 QApplication::exec()로 시작된 메인 애플리케이션 이벤트 루프와 같이 실행 중인 이벤트 루프가 없으면 실행되지 않습니다.
started, State::finished, stop(), State::initialState, running도 참조하세요 .
© 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.