Viadeo Twitter Google Bookmarks ! Facebook Digg del.icio.us MySpace Yahoo MyWeb Blinklist Netvouz Reddit Simpy StumbleUpon Bookmarks Windows Live Favorites 
Logo Documentation Qt ·  Page d'accueil  ·  Toutes les classes  ·  Toutes les fonctions  ·  Vues d'ensemble  · 

QVariantAnimation Class Reference

The QVariantAnimation class provides an abstract base class for animations. More...

 #include <QVariantAnimation>

Inherits: QAbstractAnimation.

Inherited by: QPropertyAnimation.

This class was introduced in Qt 4.6.

Public Types

typedef KeyValue
typedef KeyValues

Properties

Public Functions

QVariantAnimation ( QObject * parent = 0 )
~QVariantAnimation ()
QVariant currentValue () const
QEasingCurve easingCurve () const
QVariant endValue () const
QVariant keyValueAt ( qreal step ) const
KeyValues keyValues () const
void setDuration ( int msecs )
void setEasingCurve ( const QEasingCurve & easing )
void setEndValue ( const QVariant & value )
void setKeyValueAt ( qreal step, const QVariant & value )
void setKeyValues ( const KeyValues & keyValues )
void setStartValue ( const QVariant & value )
QVariant startValue () const

Reimplemented Public Functions

virtual int duration () const

Signals

void valueChanged ( const QVariant & value )

Protected Functions

virtual QVariant interpolated ( const QVariant & from, const QVariant & to, qreal progress ) const
virtual void updateCurrentValue ( const QVariant & value ) = 0

Reimplemented Protected Functions

virtual bool event ( QEvent * event )
virtual void updateCurrentTime ( int )
virtual void updateState ( QAbstractAnimation::State newState, QAbstractAnimation::State oldState )

Related Non-Members

void qRegisterAnimationInterpolator ( QVariant(* ) ( const T & from, const T & to, qreal progress ) func )

Additional Inherited Members

Detailed Description

The QVariantAnimation class provides an abstract base class for animations.

This class is part of The Animation Framework. It serves as a base class for property and item animations, with functions for shared functionality.

QVariantAnimation cannot be used directly as it is an abstract class; it has a pure virtual method called updateCurrentValue(). The class performs interpolation over QVariants, but leaves using the interpolated values to its subclasses. Currently, Qt provides QPropertyAnimation, which animates Qt properties. See the QPropertyAnimation class description if you wish to animate such properties.

You can then set start and end values for the property by calling setStartValue() and setEndValue(), and finally call start() to start the animation. QVariantAnimation will interpolate the property of the target object and emit valueChanged(). To react to a change in the current value you have to reimplement the updateCurrentValue() virtual function.

It is also possible to set values at specified steps situated between the start and end value. The interpolation will then touch these points at the specified steps. Note that the start and end values are defined as the key values at 0.0 and 1.0.

There are two ways to affect how QVariantAnimation interpolates the values. You can set an easing curve by calling setEasingCurve(), and configure the duration by calling setDuration(). You can change how the QVariants are interpolated by creating a subclass of QVariantAnimation, and reimplementing the virtual interpolated() function.

Subclassing QVariantAnimation can be an alternative if you have QVariants that you do not wish to declare as Qt properties. Note, however, that you in most cases will be better off declaring your QVariant as a property.

Not all QVariant types are supported. Below is a list of currently supported QVariant types:

If you need to interpolate other variant types, including custom types, you have to implement interpolation for these yourself. To do this, you can register an interpolator function for a given type. This function takes 3 parameters: the start value, the end value and the current progress.

Example:

 QVariant myColorInterpolator(const QColor &start, const QColor &end, qreal progress)
 {
     ...
     return QColor(...);
 }
 ...
 qRegisterAnimationInterpolator<QColor>(myColorInterpolator);

Another option is to reimplement interpolated(), which returns interpolation values for the value being interpolated.

See also QPropertyAnimation, QAbstractAnimation, and The Animation Framework.

Member Type Documentation

typedef QVariantAnimation::KeyValue

This is a typedef for QPair<qreal, QVariant>.

typedef QVariantAnimation::KeyValues

This is a typedef for QVector<KeyValue>

Property Documentation

currentValue : const QVariant

This property holds the current value of the animation.

This property describes the current value; an interpolated value between the start value and the end value, using the current time for progress. The value itself is obtained from interpolated(), which is called repeatedly as the animation is running.

QVariantAnimation calls the virtual updateCurrentValue() function when the current value changes. This is particularly useful for subclasses that need to track updates. For example, QPropertyAnimation uses this function to animate Qt properties.

Access functions:

QVariant currentValue () const

Notifier signal:

void valueChanged ( const QVariant & value )

See also startValue and endValue.

duration : int

This property holds the duration of the animation.

This property describes the duration in milliseconds of the animation. The default duration is 250 milliseconds.

Access functions:

virtual int duration () const
void setDuration ( int msecs )

See also QAbstractAnimation::duration().

easingCurve : QEasingCurve

This property holds the easing curve of the animation.

This property defines the easing curve of the animation. By default, a linear easing curve is used, resulting in linear interpolation. Other curves are provided, for instance, QEasingCurve::InCirc, which provides a circular entry curve. Another example is QEasingCurve::InOutElastic, which provides an elastic effect on the values of the interpolated variant.

QVariantAnimation will use the QEasingCurve::valueForProgress() to transform the "normalized progress" (currentTime / totalDuration) of the animation into the effective progress actually used by the animation. It is this effective progress that will be the progress when interpolated() is called. Also, the steps in the keyValues are referring to this effective progress.

The easing curve is used with the interpolator, the interpolated() virtual function, the animation's duration, and iterationCount, to control how the current value changes as the animation progresses.

Access functions:

QEasingCurve easingCurve () const
void setEasingCurve ( const QEasingCurve & easing )

endValue : QVariant

This property holds the end value of the animation.

This property describes the end value of the animation.

Access functions:

QVariant endValue () const
void setEndValue ( const QVariant & value )

See also startValue.

startValue : QVariant

This property holds the optional start value of the animation.

This property describes the optional start value of the animation. If omitted, or if a null QVariant is assigned as the start value, the animation will use the current position of the end when the animation is started.

Access functions:

QVariant startValue () const
void setStartValue ( const QVariant & value )

See also endValue.

Member Function Documentation

QVariantAnimation::QVariantAnimation ( QObject * parent = 0 )

Construct a QVariantAnimation object. parent is passed to QAbstractAnimation's constructor.

QVariantAnimation::~QVariantAnimation ()

Destroys the animation.

bool QVariantAnimation::event ( QEvent * event ) [virtual protected]

Reimplemented from QObject::event().

QVariant QVariantAnimation::interpolated ( const QVariant & from, const QVariant & to, qreal progress ) const [virtual protected]

This virtual function returns the linear interpolation between variants from and to, at progress, usually a value between 0 and 1. You can reimplement this function in a subclass of QVariantAnimation to provide your own interpolation algorithm.

Note that in order for the interpolation to work with a QEasingCurve that return a value smaller than 0 or larger than 1 (such as QEasingCurve::InBack) you should make sure that it can extrapolate. If the semantic of the datatype does not allow extrapolation this function should handle that gracefully.

You should call the QVariantAnimation implementation of this function if you want your class to handle the types already supported by Qt (see class QVariantAnimation description for a list of supported types).

See also QEasingCurve.

QVariant QVariantAnimation::keyValueAt ( qreal step ) const

Returns the key frame value for the given step. The given step must be in the range 0 to 1. If there is no KeyValue for step, it returns an invalid QVariant.

See also keyValues() and setKeyValueAt().

KeyValues QVariantAnimation::keyValues () const

Returns the key frames of this animation.

See also keyValueAt() and setKeyValues().

void QVariantAnimation::setKeyValueAt ( qreal step, const QVariant & value )

Creates a key frame at the given step with the given value. The given step must be in the range 0 to 1.

See also setKeyValues() and keyValueAt().

void QVariantAnimation::setKeyValues ( const KeyValues & keyValues )

Replaces the current set of key frames with the given keyValues. the step of the key frames must be in the range 0 to 1.

See also keyValues() and keyValueAt().

void QVariantAnimation::updateCurrentTime ( int ) [virtual protected]

Reimplemented from QAbstractAnimation::updateCurrentTime().

void QVariantAnimation::updateCurrentValue ( const QVariant & value ) [pure virtual protected]

This pure virtual function is called every time the animation's current value changes. The value argument is the new current value.

See also currentValue.

void QVariantAnimation::updateState ( QAbstractAnimation::State newState, QAbstractAnimation::State oldState ) [virtual protected]

Reimplemented from QAbstractAnimation::updateState().

void QVariantAnimation::valueChanged ( const QVariant & value ) [signal]

QVariantAnimation emits this signal whenever the current value changes.

See also currentValue, startValue, and endValue.

Related Non-Members

void qRegisterAnimationInterpolator ( QVariant(* ) ( const T & from, const T & to, qreal progress ) func )

Registers a custom interpolator func for the template type T. The interpolator has to be registered before the animation is constructed. To unregister (and use the default interpolator) set func to 0.

Note: This function is thread-safe.

Publicité

Best Of

Actualités les plus lues

Semaine
Mois
Année
  1. « Quelque chose ne va vraiment pas avec les développeurs "modernes" », un développeur à "l'ancienne" critique la multiplication des bibliothèques 103
  2. Pourquoi les programmeurs sont-ils moins payés que les gestionnaires de programmes ? Manquent-ils de pouvoir de négociation ? 56
  3. «Le projet de loi des droits du développeur» : quelles conditions doivent remplir les entreprises pour que le développeur puisse réussir ? 93
  4. Les développeurs détestent-ils les antivirus ? Un programmeur manifeste sa haine envers ces solutions de sécurité 32
  5. Qt Commercial : Digia organise un webinar gratuit le 27 mars sur la conception d'interfaces utilisateur et d'applications avec le framework 0
  6. Quelles nouveautés de C++11 Visual C++ doit-il rapidement intégrer ? Donnez-nous votre avis 10
  7. 2017 : un quinquennat pour une nouvelle version du C++ ? Possible, selon Herb Sutter 11
Page suivante
  1. Linus Torvalds : le "C++ est un langage horrible", en justifiant le choix du C pour le système de gestion de version Git 100
  2. Comment prendre en compte l'utilisateur dans vos applications ? Pour un développeur, « 90 % des utilisateurs sont des idiots » 231
  3. Quel est LE livre que tout développeur doit lire absolument ? Celui qui vous a le plus marqué et inspiré 96
  4. Apple cède et s'engage à payer des droits à Nokia, le conflit des brevets entre les deux firmes s'achève 158
  5. Nokia porte à nouveau plainte contre Apple pour violation de sept nouveaux brevets 158
  6. « Quelque chose ne va vraiment pas avec les développeurs "modernes" », un développeur à "l'ancienne" critique la multiplication des bibliothèques 103
  7. Quel est le code dont vous êtes le plus fier ? Pourquoi l'avez-vous écrit ? Et pourquoi vous a-t-il donné autant de satisfaction ? 83
Page suivante

Le blog Digia au hasard

Logo

Créer des applications avec un style Metro avec Qt, exemples en QML et C++, un article de Digia Qt traduit par Thibaut Cuvelier

Le blog Digia est l'endroit privilégié pour la communication sur l'édition commerciale de Qt, où des réponses publiques sont apportées aux questions les plus posées au support. Lire l'article.

Communauté

Ressources

Liens utiles

Contact

  • Vous souhaitez rejoindre la rédaction ou proposer un tutoriel, une traduction, une question... ? Postez dans le forum Contribuez ou contactez-nous par MP ou par email (voir en bas de page).

Qt dans le magazine

Cette page est une traduction d'une page de la documentation de Qt, écrite par Nokia Corporation and/or its subsidiary(-ies). Les éventuels problèmes résultant d'une mauvaise traduction ne sont pas imputables à Nokia. Qt 4.7-snapshot
Copyright © 2012 Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon, vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. Cette page est déposée à la SACD.
Vous avez déniché une erreur ? Un bug ? Une redirection cassée ? Ou tout autre problème, quel qu'il soit ? Ou bien vous désirez participer à ce projet de traduction ? N'hésitez pas à nous contacter ou par MP !
 
 
 
 
Partenaires

Hébergement Web