// -- Animations --------------------------------------------------------
// 1.1: Simple Animation
QPropertyAnimation * animPos = new QPropertyAnimation(lui, "pos");
animPos->setStartState(QPoint(0,0));
animPos->setEndState(QPoint(200,200));
animPos->setDuration(750);
animPos->setEasingCurve(QEasingCurve::InOutQuart);
// 1.2: Not So Simple Animation
QPropertyAnimation * animPos = new QPropertyAnimation(lui, "pos");
animPos->setStartState(QPoint(0,0));
animPos->setEndState(QPoint(200,200));
animPos->setDuration(750);
animPos->setEasingCurve(QEasingCurve::InOutQuart);
QPropertyAnimation * animAlpha = new QPropertyAnimation(lui, "windowOpacity");
animAlpha ->setStartState(0);
animAlpha ->setEndState(1);
animAlpha ->setDuration(750);
animAlpha ->setEasingCurve(QEasingCurve::InOutQuart);
// Animate Both Properties
QParallelAnimationGroup * animGroup = new QParallelAnimationGroup();
animGroup->addAnimation(animPos);
animGroup->addAnimation(animAlpha);
animGroup->start();
// 2: Multistate Animations
QStateMachine * animCtlr = new QStateMachine();
QState * root = new QState();
QState * init = new QState(root);
QState * inPos = new QState(root);
animCtlr->addState(root);
animCtlr->setInitialState(root);
root->setInitialState(init);
// Setup Inital State
init->assignProperty(lui, "pos", QPoint(-200, -200));
init->assignProperty(lui, "windowOpacity", 0);
// Setup Another State
inPos->assignProperty(lui, "pos", QPoint(300,300));
inPos->assignProperty(lui, "windowOpacity", 1);
// Animations
QPropertyAnimation * animPos = new QPropertyAnimation(lui, "pos");
animPos->setDuration(750);
animPos->setEasingCurve(QEasingCurve::InOutQuart);
QPropertyAnimation * animAlpha = new QPropertyAnimation(lui, "windowOpacity");
animAlpha->setDuration(750);
animAlpha->setEasingCurve(QEasingCurve::InCurve);
// Animate Both Properties
QParallelAnimationGroup * animGroup = new QParallelAnimationGroup();
animGroup->addAnimation(animPos);
animGroup->addAnimation(animAlpha);
// Animation Countdown: 100ms
QTimer * timer = new QTimer();
// Fire State Change
QAbstractTransition * trans = root->addTransition(timer, SIGNAL(timeout()), inPos);
trans->addAnimation(animGroup);
timer->setSingleShot(true);
timer->start(100);
animCtlr->start();