qt – 如何在SignalTransition期间在QML StateMachine中使用Signal的参数

我有一个C类,我可以用QML创建它.然后我在QML中有一个信号,它有一个表示该对象的参数.我正在使用QtQml.StateMachine,我正在使用SignalTransition捕获触发信号.我希望能够在SignalTransition触发时将我的信号参数设置为下一个状态.在代码中:

这就是我的信号在Model.qml中的样子:

signal mySignal(CustomObject customObject)

我在State.qml中转换代码的信号:

import QtQml.StateMachine 1.0 as SM

// SM.State { ...

Model {
    id: model
    // ...
}

SM.SignalTransition {
    targetState: nextState
    signal: model.mySignal
    onTriggered: console.log(customObject) // error here
}

// ... } 

我收到以下错误:ReferenceError:未定义customObject.
当我发出信号时,我将我的customObject作为信号的参数传递.

最佳答案 一种方法是让mySignal处理程序设置一个属性,该属性可以由灵活性较低的SignalTransition简单地访问,如下所示:

Model {
    id: model
    property CustomObject currentObj
    onMySignal: currentObj = customObject
}

SM.SignalTransition {
    targetState: nextState
    signal: model.currentObjChanged
    onTriggered: console.log(model.currentObj)
}

Hacky并没有经过测试,但对于这种情况可能是可以接受的.

点赞