让我们考虑一下这段代码:
ApplicationWindow
{
/**/
states: State {}
/**/
}
运行应用程序时,我得到了
Cannot assign to non-existent property "states"
使用时
ApplicationWindow
{
/**/
Item { states: State {} }
/**/
}
没有错误。为什么我不能在states
内使用ApplicationWindow
?
答案 0 :(得分:7)
我刚刚意识到ApplicationWindow
继承Window
继承QQuickWindow
。只有从Item
继承的类型才具有states
属性。
解决方法是使用StateGroup
。
随意添加更好的解决方案;)
答案 1 :(得分:0)
我能够使用Qt v5.11对QML ApplicationWindow中的状态进行编码,但需要注意两点。一个是Qt Creator v4.6.1编辑器标记了SignalTransition,并带有警告,指示一个州不能拥有子项。尽管有这样的警告,http://doc.qt.io/qt-5/qmlstatemachine.html#a-simple-state-machine示例中的代码仍然可以正确构建和运行。第二个警告是Qt Creator编辑器忽略了导入QtQml.StateMachine的major.minor版本。我输入的任何数字都代替1.11:
import QtQuick 2.11
import QtQuick.Controls 1.4
import QtQml.StateMachine 1.11
ApplicationWindow {
...