运行时,以下QML状态机在启动时崩溃:
import QtQuick 2.0
import QtQml.StateMachine 1.0
Item {
id: thingy
signal somethingHappened
StateMachine {
initialState: stateA
running: true
State {
id:stateA
onEntered:console.log('entered A')
SignalTransition {
targetState: stateB
signal: thingy.onSomethingHappened
}
}
State {
id: stateB
onEntered: console.log('entered B')
}
}
}
输出只是"程序意外地完成了。"
如果我将signal: thingy.onSomethingHappened
更改为signal: thingy.nope
- 或者我删除了行signal somethingHappened
- 那么它会按预期工作(除非我实际上无法触发信号国家变化)。
我做错了吗?知道为什么会崩溃吗?
在Ubuntu x64上使用Qt 5.6,如果重要。
答案 0 :(得分:4)
PEBCAK。我应该写出没有on
前缀的信号名称:
signal: thingy.somethingHappened
是是Qt运行时中的一个错误,当转换信号设置不正确时,它会发生段错误。此错误已作为http://bugreports.qt.io/browse/QTBUG-53596