无法使用ApplicationWindow的状态

mar*_*trz 3 qt states qml qt5

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

ApplicationWindow
{
    /**/
    states: State {}
    /**/
}
Run Code Online (Sandbox Code Playgroud)

运行应用程序时,我明白了

Cannot assign to non-existent property "states"
Run Code Online (Sandbox Code Playgroud)

使用时

ApplicationWindow
{
    /**/
    Item { states: State {} }
    /**/
}
Run Code Online (Sandbox Code Playgroud)

没有错误.为什么我不能states在里面使用ApplicationWindow

mar*_*trz 7

我刚刚意识到ApplicationWindow继承Window继承QQuickWindow.只有继承的类型才Item具有该states属性.

解决方法是使用StateGroup.

随意添加更好的解决方案;)

  • 谢谢,这个有效!不幸的是,这样做会破坏Qt Designer中的状态支持; 它不承认`StateGroup`.另外,注意`ApplicationWindow`是使用New Project助手创建的Qt Quick项目中的默认根元素,官方Qt教程建议使用根元素状态来构建界面(使用Qt Designer),这是一个混乱,许多用户将碰撞. (2认同)