Ich versuche eine Fitness-Anwendung zu implementieren, die den aktuellen Übungsnamen anzeigt und dann während der Ruhephasen einen Fortschrittsbalken anzeigt. Wenn der Fortschrittsbalken vollständig ausgefüllt ist, wird der Name der nächsten Übung angezeigt, dann wird eine Fortschrittsleiste angezeigt, wenn sie abgeschlossen ist, und so weiter.Wie wird am Ende eines Übergangs in QML in einen anderen Status gewechselt?
Beachten Sie, dass ich eine Fortschrittsanzeige für dieses Beispiel verwende, aber ich habe mein eigenes Widget in der realen Anwendung.
Mein System hat zwei Zustände:
- Übung der Wert des Fortschrittsbalkens 0 ist und bleibt 0
- Rest der Wert des Fortschrittsbalkens geht von 0 bis Maximalwert über die Dauer der Ruhezeit
So geht es wie folgt aus:
- die Anwendung in „Übung“ Zustand und zeigt den Namen des aktuellen exercicse
- der Benutzer die Übung ausführen und auf dem Fortschrittsbalken klicken, wenn er getan Zustand
- die Anwendung schaltet auf den „Rest“
- der Benutzer ruht, während die Fortschrittsbalken
- nach den Fortschrittsbalken abgeschlossen sind, um die Anwendung beendet ist schaltet zurück auf den „Übung“ Zustand und zeigt den Namen der nächsten Übung
Mein Problem ist, Witz h Schritt 5: Ich weiß nicht, wie ich am Ende eines Übergangs in einen anderen Zustand zurückwechseln kann. Ich habe versucht, die „Zustand“ Eigenschaft während eines Property und Zeit es am Ende eines Übergangs mit einem SequentialAnimation zu ändern, aber ich bekomme diese Fehlermeldung:
QML StateGroup: Kann nicht eine Zustandsänderung beantragen als Teil einer Zustandsdefinition.
Hier ist ein Beispielcode:
import QtQuick 2.0
import QtQuick.Controls 1.1
ProgressBar {
id: root
width: 200
height: 48
minimumValue: 0
maximumValue: 100
value: 76
function switchState() {
if (state == "exercise")
{
state = "rest"
return
}
if (state == "rest")
{
state = "exercise"
return
}
}
state: "exercise"
states: [
State {
name: "exercise"
PropertyChanges {
target: root
value: 0
}
},
State {
name: "rest"
PropertyChanges {
target: root
value: maximumValue
// error: QML StateGroup: Can't apply a state change as part of a state definition.
// state: "exercise"
}
}
]
transitions: [
Transition {
to: "rest"
PropertyAnimation {
target: root
properties: "value"
duration: 1000
}
}
]
MouseArea {
anchors.fill: parent
onClicked: parent.switchState()
}
}
Wie kann ich am Ende eines Zustandsübergang in einen anderen Zustand wechseln?
Eine Möglichkeit wäre, einen Timer am Ende auszulösen und die Zustandsänderung vom Zeitgeberablaufstatusbit zu tun. – onion