Когда используется условие when
состояния QML, оно иногда проходит через состояние по умолчанию (""
) перед переходом в конечное состояние:
import QtQuick 2.14
import QtQuick.Controls 2.14
Button {
id: root
width: 30
height: 30
states: [
State {
name: "PRESSED"
when: pressed
},
State {
name: "NOTPRESSED"
when: !pressed
}
]
onStateChanged: {
console.log("State: " + state);
}
}
pressed
здесь - логическое значение поэтому, независимо от его значения, onStateChanged()
должно запускаться с одним из определенных мной состояний. Но здесь вывод:
$ qmlscene ./Button.qml
qml: State: NOTPRESSED
qml: State:
qml: State: PRESSED
qml: State: NOTPRESSED
qml: State:
qml: State: PRESSED
qml: State: NOTPRESSED
qml: State:
qml: State: PRESSED
qml: State: NOTPRESSED
Почему Qt изменяет состояние с NOTPRESSED
на ""
перед установкой целевого состояния PRESSED
?
Я проверял это компонент с Qt 5.14.1 и 5.15.