我有一个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并没有经过测试,但对于这种情况可能是可以接受的.