На этом шаге рассмотрим понятие смягчающих линий.
Смягчающие линии (Easing Curves) придают особую реалистичность проводимой анимации и создают у пользователей чувство того, что в программе реализован серьезный математический движок для симуляции динамики изменения объектов. Продемонстрируем применение смягчающих линий на простом примере (рис. 1), в котором будут анимированы два окна виджетов.

Рис.1. Использование смягчающих линий
QLabel lbl1("Animated Window1");//создаем два виджета надписи
QLabel lbl2("Animated Window2");
QPropertyAnimation* panim1 =
new QPropertyAnimation(&lbl1, "geometry");/*создаем анимацию свойств,
которая будет применяться к свойству
виджета geometry для изменения
местоположения и размеров*/
panim1->setDuration(3000);//присваиваем продолжительность, равную трем секундам
panim1->setStartValue(QRect(120, 0, 100, 100));/*устанавливаем начальные значения
для изменений*/
panim1->setEndValue(QRect(480, 380, 200, 200));/*устанавливаем конечные значения
для изменений*/
panim1->setEasingCurve(QEasingCurve::InOutExpo);/*устанавливает в анимации
смягчающие линии*/
QPropertyAnimation* panim2 = new QPropertyAnimation(&lbl2, "pos");/*создаем анимацию
свойств, которая будет применяться
к свойству виджета pos для
изменения только местоположения*/
panim2->setDuration(3000);
panim2->setStartValue(QPoint(240, 0));
panim2->setEndValue(QPoint(240, 480));
panim2->setEasingCurve(QEasingCurve::OutBounce);
QParallelAnimationGroup group;/*используем параллельную группу,
чтобы оба окна были анимированы одновременно*/
group.addAnimation(panim1);//добавляем в нее анимации
group.addAnimation(panim2);
group.setLoopCount(3);//устанавливаем количество ее исполнений равное трем
group.start();//из группы анимаций запускаем ее на исполнение
lbl1.show();
lbl2.show();Файлы приложения можно взять здесь.
На следующем шаге рассмотрим машину состояний и переходы в Qt.