Состояния принадлежат элементу, поэтому, когда вы указываете состояние: «готово» в прямоугольнике ищет состояния прямоугольника, а не состояния других элементов. Итак, у вас есть 2 решения:
1. Установить начальное состояние в окне:
Window{
id: main
width: 800
height: 800
visible: true
Item{
Rectangle {
id: rect
width: 100
height: 100
color: "red"
}
state: "ready"
states: [
State {
name: "ready"
PropertyChanges {
target: rect
color: "lightblue"
opacity: 0.2
}
}
]
}
}
2. Переместите состояния в прямоугольник, чтобы они были их состояниями.
Window{
id: main
width: 800
height: 800
visible: true
Item{
Rectangle {
id: rect
width: 100
height: 100
color: "red"
state: "ready"
states: [
State {
name: "ready"
PropertyChanges {
target: rect
color: "lightblue"
opacity: 0.2
}
}
]
}
}
}
Если вы хотите, чтобы из другого Предмета было назначено начальное состояние, вы должны использовать ссылку на предмет, в следующем примере состояния принадлежат Предмету с id: it
, и затем мы устанавливаем его, когда прямоугольник завершает построение:
Window{
id: main
width: 800
height: 800
visible: true
Item{
id: it
Rectangle {
id: rect
width: 100
height: 100
color: "red"
Component.onCompleted: it.state = "ready"
}
states: [
State {
name: "ready"
PropertyChanges {
target: rect
color: "lightblue"
opacity: 0.2
}
}
]
}
}