无法使用 ApplicationWindow 的状态
Unable to use states with ApplicationWindow
让我们考虑一下这个代码片段:
ApplicationWindow
{
/**/
states: State {}
/**/
}
当运行申请时,我得到
Cannot assign to non-existent property "states"
使用时
ApplicationWindow
{
/**/
Item { states: State {} }
/**/
}
没有错误。为什么我不能在 ApplicationWindow
中使用 states
?
我刚刚意识到 ApplicationWindow
继承了 Window
继承了 QQuickWindow
。只有从 Item
继承的类型才有 states
属性。
解决方法是使用 StateGroup
。
随时添加更好的解决方案;)
我能够使用 Qt v5.11 在 QML ApplicationWindow 中编写状态代码,但有两个注意事项。其中之一是 Qt Creator v4.6.1 编辑器用警告标记 SignalTransition,表明 State 不能有子项。尽管有该警告,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 {
...
让我们考虑一下这个代码片段:
ApplicationWindow
{
/**/
states: State {}
/**/
}
当运行申请时,我得到
Cannot assign to non-existent property "states"
使用时
ApplicationWindow
{
/**/
Item { states: State {} }
/**/
}
没有错误。为什么我不能在 ApplicationWindow
中使用 states
?
我刚刚意识到 ApplicationWindow
继承了 Window
继承了 QQuickWindow
。只有从 Item
继承的类型才有 states
属性。
解决方法是使用 StateGroup
。
随时添加更好的解决方案;)
我能够使用 Qt v5.11 在 QML ApplicationWindow 中编写状态代码,但有两个注意事项。其中之一是 Qt Creator v4.6.1 编辑器用警告标记 SignalTransition,表明 State 不能有子项。尽管有该警告,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 {
...