信号转换 QML 类型

SignalTransition 类型提供了一个基于 Qt 信号的转换。 更多...

导入声明import QtQml.StateMachine 6.7
继承

QSignalTransition

属性

详细描述

SignalTransition 是 Qt 状态机 QML API 的一部分。

示例用法

import QtQuick
import QtQml.StateMachine as DSM

Rectangle {
    DSM.StateMachine {
        id: stateMachine
        initialState: state
        running: true
        DSM.State {
            id: state
            DSM.SignalTransition {
                targetState: finalState
                signal: button.clicked
                guard: guardButton.checked
            }
        }
        DSM.FinalState {
            id: finalState
        }
        onFinished: Qt.quit()
    }
    Row {
        spacing: 2
        Button {
            id: button
            text: "Finish state"
        }

        Button {
            id: guardButton
            checkable: true
            text: checked ? "Press to block the SignalTransition" : "Press to unblock the SignalTransition"
        }
    }
}

另请参阅 StateMachineFinalStateTimeoutTransition

属性文档

guard : bool

守卫条件通过仅当它们评估为真时启用转换以及当它们评估为假时禁用转换来影响状态机的行为。

当与此信号转换相关联的信号被发射时,守卫条件将被评估。在守卫条件中,可以使用例如以下示例中的信号参数。

import QtQuick
import QtQml.StateMachine as DSM

Rectangle {
    Button {
        anchors.fill: parent
        id: button
        DSM.StateMachine {
            DSM.State {
                DSM.SignalTransition {
                    targetState: finalState
                    signal: button.mysignal
                    // the guard condition uses the mystr string argument from mysignal
                    guard: mystr == "test"
                }
            }
            DSM.FinalState {
                id: finalState
            }
        }
        // define the signal the SignalTransition is connected with
        signal mysignal(mystr: string)
        // on clicking the button emit the signal with a single string argument
        onClicked: button.mysignal("test")
    }
}

另请参阅 signal


signal : signal

与此信号转换相关联的信号。

import QtQuick
import QtQml.StateMachine as DSM

Rectangle {
    Button {
        anchors.fill: parent
        id: button
        DSM.StateMachine {
            DSM.State {
                DSM.SignalTransition {
                    targetState: finalState
                    signal: button.clicked
                }
            }
            DSM.FinalState {
                id: finalState
            }
        }
    }
}

© 2024 Qt 公司有限公司。此处包含的文档贡献属于各自的著作权所有者。此处提供的文档根据自由软件基金会的发布版本 1.3 的 GNU 自由文档许可证 许可。Qt 和相应的标志是芬兰和其他国家的 Qt 公司的商标。所有其他商标均为各自所有者的财产。