gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 20:35:44 24 4
gpt4 key购买 nike

我有一个 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 is not defined .
当我发出信号时,我将 customObject 作为信号的参数传递。

最佳答案

这是一个小技巧,但是 guard传递信号的参数。 guard是一个表达式,它被评估以查看它是否为真(如果是,则转换适用),但没有什么可以阻止您在其中运行额外的代码。所以:

State {
targetState: nextState
signal: model.mySignal
guard: {
// here, customObject is available, because it was an arg to the signal
// so, stash it away somewhere where you can get at it later
root.currentCustomObject = customObject;
// and explicitly return true, so that this guard passes OK and
// then the transition actually happens
return true;
}
}

关于qt - 如何在 SignalTransition 期间使用 QML StateMachine 中的 Signal 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36264499/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com