QML状态机与信号崩溃

时间:2016-05-24 22:16:54

标签: qt qml

运行时,以下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,如果重要。

1 个答案:

答案 0 :(得分:4)

PEBCAK。我应该写出没有on前缀的信号名称:

signal: thingy.somethingHappened

是Qt运行时中的一个错误,当转换信号设置不正确时,它会发生段错误。此错误已作为http://bugreports.qt.io/browse/QTBUG-53596

提交(并已修复)