С появлением Qt 4.6 реализация анимации в проекте упростилась до минимума.
В том случае, когда необходима анимация свойств компонента, Qt 4.6 предлагает воспользоваться классом QPropertyAnimation. Вот пример анимации изменения размера виджета:
С помощью метода setDuration(int) задаётся продолжительность анимации, а с помощью метода setEasingCurve(const QEasingCurve&) задается кривая изменения значения с течением времени. В данном примере выбрана кривая OutQuad

Собственно, 6 строчек и все.
Для анимации значения не являющегося свойством можно отнаследоваться от QVariantAnimation и переопределить метод void updateCurrentValue(const QVariant&). В этом методе необходимо описать логику того что должно произойти при изменении значения.
QVariantAnimation поддерживает следующие типы: Int, Double, Float, QLine, QLineF, QPoint, QSize, QSizeF, QRect,QRectF. Если тип изменяемого значения не принадлежит ни одному из вышеперечисленных — надо переопределить метод интерполяции virtual QVariant interpolated ( const QVariant & from, const QVariant & to, qreal progress ) const
Вот пример того что получилось:
В том случае, когда необходима анимация свойств компонента, Qt 4.6 предлагает воспользоваться классом QPropertyAnimation. Вот пример анимации изменения размера виджета:
- #include <QWidget>
- #include <QPropertyAnimation>
- #include <QEasingCurve>
-
- class MyWidget : public QWidget {
- public:
- MyWidget(QObject* parent = 0);
- // MyWidget fields and methods
- public slots:
- void startAnimation();
- private:
- QPropertyAnimation* _propertyAnimation;
- };
* This source code was highlighted with Source Code Highlighter.
- MyWidget::MyWidget(QObject *parent) : QWidget(parent) {
- // Widget initialization
- _propertyAnimation = new QPropertyAnimation(this,"geometry");
- _propertyAnimation->setDuration(1000);
- _propertyAnimation->setEasingCurve(QEasingCurve::OutCubic);
- }
-
- void MyWidget::startAnimation() {
- QRectF firstPosition;
- QRectF endPosition;
- // Initializing first and end values
- _propertyAnimation->setFirstValue(firstPosition);
- _propertyAnimation->setEndValue(endPosition);
- _propertyAnimation->start();
- }
* This source code was highlighted with Source Code Highlighter.
С помощью метода setDuration(int) задаётся продолжительность анимации, а с помощью метода setEasingCurve(const QEasingCurve&) задается кривая изменения значения с течением времени. В данном примере выбрана кривая OutQuad

Собственно, 6 строчек и все.
Для анимации значения не являющегося свойством можно отнаследоваться от QVariantAnimation и переопределить метод void updateCurrentValue(const QVariant&). В этом методе необходимо описать логику того что должно произойти при изменении значения.
QVariantAnimation поддерживает следующие типы: Int, Double, Float, QLine, QLineF, QPoint, QSize, QSizeF, QRect,QRectF. Если тип изменяемого значения не принадлежит ни одному из вышеперечисленных — надо переопределить метод интерполяции virtual QVariant interpolated ( const QVariant & from, const QVariant & to, qreal progress ) const
Вот пример того что получилось: