[Qt-qml] Error with PropertyAction/SequentialAnimation/Timer
Mark Tucker
mark.tucker at airborne.aero
Tue Dec 7 16:59:13 CET 2010
Hello,
I am trying to animate changing a string, by fading it out, changing it,
then fading it back in, but I'm having an issue with the way I am
populating the string, and I have no idea why. The following is an
example as simplified as I can get it that exhibits this error:
//ListIndexError.qml
import Qt 4.7
Rectangle {
width: 200
height: 200
property int listIndex: 0
ListModel {
id: model
ListElement{ dataString: "String 1" }
ListElement{ dataString: "String 2" }
ListElement{ dataString: "String 3" }
}
Text {
id: textArea
anchors.centerIn: parent
}
SequentialAnimation {
id: textAnimation
//alwaysRunToEnd: true
NumberAnimation { target: textArea; property: "opacity";
to: 0; duration: 250 }
PropertyAction { target: textArea; property: "text";
value: { /*console.log("In PropertyAction " + "listIndex: " + listIndex
+ " count: " + model.count);*/ model.get(listIndex).dataString } }
NumberAnimation { target: textArea; property: "opacity";
to: 1; duration: 250 }
}
Timer {
id: textTimer
interval: 5000
repeat: true
running: true
triggeredOnStart: true
onTriggered: {
listIndex++;
if (listIndex >= model.count) {
listIndex = 0;
}
//console.log("listIndex: " + listIndex + "
count: " + model.count)
textAnimation.start();
}
}
}
I've commented out the two console.log entries above, which I am using
to try and figure out what is going on. Note that the behaviour observed
is the same with Qt 4.7.0 or 4.7.1.
The Timer fires every 5 seconds and in doing so increments the listIndex
property. It then checks to make sure that it is still valid by checking
it against model.count, if it's equal to or greater then that then it
resets it to 0. After that, still in the onTriggered handler, it then
starts the animation.
For some reason the PropertyAction is being called when listIndex is 3
and hence causes an error due to an undefined value. I'm failing to see
how it should ever be the case that listIndex should be 3 when the
PropertyAction does its thing though.
Am I missing something blatantly obvious here or is there a but in Qt
somewhere here?
Thanks
Mark Tucker
More information about the Qt-qml
mailing list