无法使用ApplicationWindow的状态

时间:2015-08-14 11:46:28

标签: qt qml qt5 states

让我们考虑一下这段代码:

ApplicationWindow
{
    /**/
    states: State {}
    /**/
}

运行应用程序时,我得到了

Cannot assign to non-existent property "states"

使用时

ApplicationWindow
{
    /**/
    Item { states: State {} }
    /**/
}

没有错误。为什么我不能在states内使用ApplicationWindow

2 个答案:

答案 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 {
    ...