Qt 4.8
Public Functions | Protected Functions | Properties | List of all members
QPropertyAnimation Class Reference

The QPropertyAnimation class animates Qt properties. More...

#include <qpropertyanimation.h>

Inheritance diagram for QPropertyAnimation:
QVariantAnimation QAbstractAnimation QObject

Public Functions

QByteArray propertyName () const
 
 QPropertyAnimation (QObject *parent=0)
 Construct a QPropertyAnimation object. More...
 
 QPropertyAnimation (QObject *target, const QByteArray &propertyName, QObject *parent=0)
 Construct a QPropertyAnimation object. More...
 
void setPropertyName (const QByteArray &propertyName)
 
void setTargetObject (QObject *target)
 
QObjecttargetObject () const
 
 ~QPropertyAnimation ()
 Destroys the QPropertyAnimation instance. More...
 
- Public Functions inherited from QVariantAnimation
QVariant currentValue () const
 
int duration () const
 
QEasingCurve easingCurve () const
 
QVariant endValue () const
 
QVariant keyValueAt (qreal step) const
 Returns the key frame value for the given step. More...
 
KeyValues keyValues () const
 Returns the key frames of this animation. More...
 
 QVariantAnimation (QObject *parent=0)
 Construct a QVariantAnimation object. More...
 
void setDuration (int msecs)
 
void setEasingCurve (const QEasingCurve &easing)
 
void setEndValue (const QVariant &value)
 
void setKeyValueAt (qreal step, const QVariant &value)
 Creates a key frame at the given step with the given value. More...
 
void setKeyValues (const KeyValues &values)
 Replaces the current set of key frames with the given keyValues. More...
 
void setStartValue (const QVariant &value)
 
QVariant startValue () const
 
 ~QVariantAnimation ()
 Destroys the animation. More...
 
- Public Functions inherited from QAbstractAnimation
int currentLoop () const
 
int currentLoopTime () const
 Returns the current time inside the current loop. More...
 
int currentTime () const
 
Direction direction () const
 
QAnimationGroupgroup () const
 If this animation is part of a QAnimationGroup, this function returns a pointer to the group; otherwise, it returns 0. More...
 
int loopCount () const
 
 QAbstractAnimation (QObject *parent=0)
 Constructs the QAbstractAnimation base class, and passes parent to QObject's constructor. More...
 
void setDirection (Direction direction)
 
void setLoopCount (int loopCount)
 
State state () const
 
int totalDuration () const
 Returns the total and effective duration of the animation, including the loop count. More...
 
virtual ~QAbstractAnimation ()
 Stops the animation if it's running, then destroys the QAbstractAnimation. More...
 
- Public Functions inherited from QObject
bool blockSignals (bool b)
 If block is true, signals emitted by this object are blocked (i.e., emitting a signal will not invoke anything connected to it). More...
 
const QObjectListchildren () const
 Returns a list of child objects. More...
 
bool connect (const QObject *sender, const char *signal, const char *member, Qt::ConnectionType type=Qt::AutoConnection) const
 
bool disconnect (const char *signal=0, const QObject *receiver=0, const char *member=0)
 
bool disconnect (const QObject *receiver, const char *member=0)
 
void dumpObjectInfo ()
 Dumps information about signal connections, etc. More...
 
void dumpObjectTree ()
 Dumps a tree of children to the debug output. More...
 
QList< QByteArraydynamicPropertyNames () const
 Returns the names of all properties that were dynamically added to the object using setProperty(). More...
 
virtual bool eventFilter (QObject *, QEvent *)
 Filters events if this object has been installed as an event filter for the watched object. More...
 
template<typename T >
findChild (const QString &aName=QString()) const
 Returns the child of this object that can be cast into type T and that is called name, or 0 if there is no such object. More...
 
template<typename T >
QList< T > findChildren (const QString &aName=QString()) const
 Returns all children of this object with the given name that can be cast to type T, or an empty list if there are no such objects. More...
 
template<typename T >
QList< T > findChildren (const QRegExp &re) const
 
bool inherits (const char *classname) const
 Returns true if this object is an instance of a class that inherits className or a QObject subclass that inherits className; otherwise returns false. More...
 
void installEventFilter (QObject *)
 Installs an event filter filterObj on this object. More...
 
bool isWidgetType () const
 Returns true if the object is a widget; otherwise returns false. More...
 
void killTimer (int id)
 Kills the timer with timer identifier, id. More...
 
virtual const QMetaObjectmetaObject () const
 Returns a pointer to the meta-object of this object. More...
 
void moveToThread (QThread *thread)
 Changes the thread affinity for this object and its children. More...
 
QString objectName () const
 
QObjectparent () const
 Returns a pointer to the parent object. More...
 
QVariant property (const char *name) const
 Returns the value of the object's name property. More...
 
Q_INVOKABLE QObject (QObject *parent=0)
 Constructs an object with parent object parent. More...
 
void removeEventFilter (QObject *)
 Removes an event filter object obj from this object. More...
 
void setObjectName (const QString &name)
 
void setParent (QObject *)
 Makes the object a child of parent. More...
 
bool setProperty (const char *name, const QVariant &value)
 Sets the value of the object's name property to value. More...
 
void setUserData (uint id, QObjectUserData *data)
 
bool signalsBlocked () const
 Returns true if signals are blocked; otherwise returns false. More...
 
int startTimer (int interval)
 Starts a timer and returns a timer identifier, or returns zero if it could not start a timer. More...
 
QThreadthread () const
 Returns the thread in which the object lives. More...
 
QObjectUserDatauserData (uint id) const
 
virtual ~QObject ()
 Destroys the object, deleting all its child objects. More...
 

Protected Functions

bool event (QEvent *event)
 Reimplemented Function More...
 
void updateCurrentValue (const QVariant &value)
 This virtual function is called by QVariantAnimation whenever the current value changes. More...
 
void updateState (QAbstractAnimation::State newState, QAbstractAnimation::State oldState)
 If the startValue is not defined when the state of the animation changes from Stopped to Running, the current property value is used as the initial value for the animation. More...
 
- Protected Functions inherited from QVariantAnimation
bool event (QEvent *event)
 Reimplemented Function More...
 
virtual QVariant interpolated (const QVariant &from, const QVariant &to, qreal progress) const
 This virtual function returns the linear interpolation between variants from and to, at progress, usually a value between 0 and 1. More...
 
 QVariantAnimation (QVariantAnimationPrivate &dd, QObject *parent=0)
 
void updateCurrentTime (int)
 Reimplemented Function More...
 
void updateState (QAbstractAnimation::State newState, QAbstractAnimation::State oldState)
 Reimplemented Function More...
 
- Protected Functions inherited from QAbstractAnimation
 QAbstractAnimation (QAbstractAnimationPrivate &dd, QObject *parent=0)
 
virtual void updateDirection (QAbstractAnimation::Direction direction)
 This virtual function is called by QAbstractAnimation when the direction of the animation is changed. More...
 
- Protected Functions inherited from QObject
virtual void childEvent (QChildEvent *)
 This event handler can be reimplemented in a subclass to receive child events. More...
 
virtual void connectNotify (const char *signal)
 This virtual function is called when something has been connected to signal in this object. More...
 
virtual void customEvent (QEvent *)
 This event handler can be reimplemented in a subclass to receive custom events. More...
 
virtual void disconnectNotify (const char *signal)
 This virtual function is called when something has been disconnected from signal in this object. More...
 
 QObject (QObjectPrivate &dd, QObject *parent=0)
 
int receivers (const char *signal) const
 Returns the number of receivers connected to the signal. More...
 
QObjectsender () const
 Returns a pointer to the object that sent the signal, if called in a slot activated by a signal; otherwise it returns 0. More...
 
int senderSignalIndex () const
 
virtual void timerEvent (QTimerEvent *)
 This event handler can be reimplemented in a subclass to receive timer events for the object. More...
 

Properties

QByteArray propertyName
 the target property name for this animation More...
 
QObjecttargetObject
 the target QObject for this animation. More...
 

Additional Inherited Members

- Public Types inherited from QVariantAnimation
typedef QVariant(* Interpolator) (const void *from, const void *to, qreal progress)
 
typedef QPair< qreal, QVariantKeyValue
 This is a typedef for QPair<qreal, QVariant>. More...
 
typedef QVector< KeyValueKeyValues
 This is a typedef for QVector<KeyValue> More...
 
- Public Types inherited from QAbstractAnimation
enum  DeletionPolicy { KeepWhenStopped = 0, DeleteWhenStopped }
 
enum  Direction { Forward, Backward }
 This enum describes the direction of the animation when in Running state. More...
 
enum  State { Stopped, Paused, Running }
 This enum describes the state of the animation. More...
 
- Public Slots inherited from QAbstractAnimation
void pause ()
 Pauses the animation. More...
 
void resume ()
 Resumes the animation after it was paused. More...
 
void setCurrentTime (int msecs)
 
void setPaused (bool)
 If paused is true, the animation is paused. More...
 
void start (QAbstractAnimation::DeletionPolicy policy=KeepWhenStopped)
 Starts the animation. More...
 
void stop ()
 Stops the animation. More...
 
- Public Slots inherited from QObject
void deleteLater ()
 Schedules this object for deletion. More...
 
- Signals inherited from QVariantAnimation
void valueChanged (const QVariant &value)
 QVariantAnimation emits this signal whenever the current value changes. More...
 
- Signals inherited from QAbstractAnimation
void currentLoopChanged (int currentLoop)
 QAbstractAnimation emits this signal whenever the current loop changes. More...
 
void directionChanged (QAbstractAnimation::Direction)
 QAbstractAnimation emits this signal whenever the direction has been changed. More...
 
void finished ()
 QAbstractAnimation emits this signal after the animation has stopped and has reached the end. More...
 
void stateChanged (QAbstractAnimation::State newState, QAbstractAnimation::State oldState)
 QAbstractAnimation emits this signal whenever the state of the animation has changed from oldState to newState. More...
 
- Signals inherited from QObject
void destroyed (QObject *=0)
 This signal is emitted immediately before the object obj is destroyed, and can not be blocked. More...
 
- Static Public Functions inherited from QObject
static bool connect (const QObject *sender, const char *signal, const QObject *receiver, const char *member, Qt::ConnectionType=Qt::AutoConnection)
 Creates a connection of the given type from the signal in the sender object to the method in the receiver object. More...
 
static bool connect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &method, Qt::ConnectionType type=Qt::AutoConnection)
 
static bool disconnect (const QObject *sender, const char *signal, const QObject *receiver, const char *member)
 Disconnects signal in object sender from method in object receiver. More...
 
static bool disconnect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &member)
 
static uint registerUserData ()
 
static QString tr (const char *sourceText, const char *comment=0, int n=-1)
 
static QString trUtf8 (const char *sourceText, const char *comment=0, int n=-1)
 
- Static Public Variables inherited from QObject
static const QMetaObject staticMetaObject
 This variable stores the meta-object for the class. More...
 
- Protected Variables inherited from QObject
QScopedPointer< QObjectDatad_ptr
 
- Static Protected Variables inherited from QObject
static const QMetaObject staticQtMetaObject
 

Detailed Description

The QPropertyAnimation class animates Qt properties.

Since
4.6

QPropertyAnimation interpolates over Qt's Property System{Qt properties}. As property values are stored in QVariant, the class inherits QVariantAnimation, and supports animation of the same variant types as its super class.

A class declaring properties must be a QObject. To make it possible to animate a property, it must provide a setter (so that QPropertyAnimation can set the property's value). Note that this makes it possible to animate many of Qt's widgets. Let's look at an example:

QPropertyAnimation *animation = new QPropertyAnimation(myWidget, "geometry");
animation->setDuration(10000);
animation->setStartValue(QRect(0, 0, 100, 30));
animation->setEndValue(QRect(250, 250, 100, 30));
animation->start();

The property name and the QObject instance of which property should be animated are passed to the constructor. You can then specify the start and end value of the property. The procedure is equal for properties in classes you have implemented yourself–just check with QVariantAnimation that your QVariant type is supported.

The QVariantAnimation class description explains how to set up the animation in detail. Note, however, that if a start value is not set, the property will start at the value it had when the QPropertyAnimation instance was created.

QPropertyAnimation works like a charm on its own. For complex animations that, for instance, contain several objects, QAnimationGroup is provided. An animation group is an animation that can contain other animations, and that can manage when its animations are played. Look at QParallelAnimationGroup for an example.

See also
QVariantAnimation, QAnimationGroup, {The Animation Framework}

Definition at line 56 of file qpropertyanimation.h.

Constructors and Destructors

◆ QPropertyAnimation() [1/2]

QPropertyAnimation::QPropertyAnimation ( QObject parent = 0)

Construct a QPropertyAnimation object.

parent is passed to QObject's constructor.

Definition at line 151 of file qpropertyanimation.cpp.

153 {
154 }
QVariantAnimation(QObject *parent=0)
Construct a QVariantAnimation object.

◆ QPropertyAnimation() [2/2]

QPropertyAnimation::QPropertyAnimation ( QObject target,
const QByteArray propertyName,
QObject parent = 0 
)

Construct a QPropertyAnimation object.

parent is passed to QObject's constructor. The animation changes the property propertyName on target. The default duration is 250ms.

See also
targetObject, propertyName

Definition at line 163 of file qpropertyanimation.cpp.

165 {
166  setTargetObject(target);
167  setPropertyName(propertyName);
168 }
void setPropertyName(const QByteArray &propertyName)
void setTargetObject(QObject *target)
QVariantAnimation(QObject *parent=0)
Construct a QVariantAnimation object.

◆ ~QPropertyAnimation()

QPropertyAnimation::~QPropertyAnimation ( )

Destroys the QPropertyAnimation instance.

Definition at line 173 of file qpropertyanimation.cpp.

174 {
175  stop();
176 }
void stop()
Stops the animation.

Functions

◆ event()

bool QPropertyAnimation::event ( QEvent event)
protectedvirtual

Reimplemented Function

Reimplemented from QAbstractAnimation.

Definition at line 239 of file qpropertyanimation.cpp.

240 {
241  return QVariantAnimation::event(event);
242 }
bool event(QEvent *event)
Reimplemented Function

◆ propertyName()

QByteArray QPropertyAnimation::propertyName ( ) const

Referenced by setPropertyName(), and setTargetObject().

◆ setPropertyName()

void QPropertyAnimation::setPropertyName ( const QByteArray propertyName)

Definition at line 223 of file qpropertyanimation.cpp.

Referenced by QPropertyAnimation().

224 {
226  if (d->state != QAbstractAnimation::Stopped) {
227  qWarning("QPropertyAnimation::setPropertyName: you can't change the property name of a running animation");
228  return;
229  }
230 
231  d->propertyName = propertyName;
232  d->updateMetaProperty();
233 }
double d
Definition: qnumeric_p.h:62
The QPropertyAnimation class animates Qt properties.
#define Q_D(Class)
Definition: qglobal.h:2482
Q_CORE_EXPORT void qWarning(const char *,...)
QByteArray propertyName() const

◆ setTargetObject()

void QPropertyAnimation::setTargetObject ( QObject target)

Definition at line 192 of file qpropertyanimation.cpp.

Referenced by QPropertyAnimation().

193 {
195  if (d->targetValue == target)
196  return;
197 
198  if (d->state != QAbstractAnimation::Stopped) {
199  qWarning("QPropertyAnimation::setTargetObject: you can't change the target of a running animation");
200  return;
201  }
202 
203  d->target = d->targetValue = target;
204  d->updateMetaProperty();
205 }
double d
Definition: qnumeric_p.h:62
The QPropertyAnimation class animates Qt properties.
#define Q_D(Class)
Definition: qglobal.h:2482
Q_CORE_EXPORT void qWarning(const char *,...)

◆ targetObject()

QObject* QPropertyAnimation::targetObject ( ) const

Referenced by ~QPropertyAnimation().

◆ updateCurrentValue()

void QPropertyAnimation::updateCurrentValue ( const QVariant value)
protectedvirtual

This virtual function is called by QVariantAnimation whenever the current value changes.

value is the new, updated value. It updates the current value of the property on the target object.

See also
currentValue, currentTime

Implements QVariantAnimation.

Definition at line 251 of file qpropertyanimation.cpp.

252 {
254  d->updateProperty(value);
255 }
double d
Definition: qnumeric_p.h:62
The QPropertyAnimation class animates Qt properties.
#define Q_D(Class)
Definition: qglobal.h:2482

◆ updateState()

void QPropertyAnimation::updateState ( QAbstractAnimation::State  newState,
QAbstractAnimation::State  oldState 
)
protectedvirtual

If the startValue is not defined when the state of the animation changes from Stopped to Running, the current property value is used as the initial value for the animation.

Reimplemented Function

Reimplemented from QAbstractAnimation.

Definition at line 266 of file qpropertyanimation.cpp.

268 {
270 
271  if (!d->target && oldState == Stopped) {
272  qWarning("QPropertyAnimation::updateState (%s): Changing state of an animation without target",
273  d->propertyName.constData());
274  return;
275  }
276 
277  QVariantAnimation::updateState(newState, oldState);
278 
279  QPropertyAnimation *animToStop = 0;
280  {
281 #ifndef QT_NO_THREAD
283 #endif
284  typedef QPair<QObject *, QByteArray> QPropertyAnimationPair;
285  typedef QHash<QPropertyAnimationPair, QPropertyAnimation*> QPropertyAnimationHash;
286  static QPropertyAnimationHash hash;
287  //here we need to use value because we need to know to which pointer
288  //the animation was referring in case stopped because the target was destroyed
289  QPropertyAnimationPair key(d->targetValue, d->propertyName);
290  if (newState == Running) {
291  d->updateMetaProperty();
292  animToStop = hash.value(key, 0);
293  hash.insert(key, this);
294  // update the default start value
295  if (oldState == Stopped) {
296  d->setDefaultStartEndValue(d->targetValue->property(d->propertyName.constData()));
297  //let's check if we have a start value and an end value
298  if (!startValue().isValid() && (d->direction == Backward || !d->defaultStartEndValue.isValid())) {
299  qWarning("QPropertyAnimation::updateState (%s, %s, %s): starting an animation without start value",
300  d->propertyName.constData(), d->target.data()->metaObject()->className(),
301  qPrintable(d->target.data()->objectName()));
302  }
303  if (!endValue().isValid() && (d->direction == Forward || !d->defaultStartEndValue.isValid())) {
304  qWarning("QPropertyAnimation::updateState (%s, %s, %s): starting an animation without end value",
305  d->propertyName.constData(), d->target.data()->metaObject()->className(),
306  qPrintable(d->target.data()->objectName()));
307  }
308  }
309  } else if (hash.value(key) == this) {
310  hash.remove(key);
311  }
312  }
313 
314  //we need to do that after the mutex was unlocked
315  if (animToStop) {
316  // try to stop the top level group
317  QAbstractAnimation *current = animToStop;
318  while (current->group() && current->state() != Stopped)
319  current = current->group();
320  current->stop();
321  }
322 }
double d
Definition: qnumeric_p.h:62
static uint hash(const uchar *p, int n)
Definition: qhash.cpp:68
The QPropertyAnimation class animates Qt properties.
QVariant endValue() const
static const QMetaObject staticMetaObject
This variable stores the meta-object for the class.
Definition: qobject.h:128
The QHash class is a template class that provides a hash-table-based dictionary.
Definition: qdatastream.h:66
#define Q_D(Class)
Definition: qglobal.h:2482
State state
state of the animation.
void stop()
Stops the animation.
QAnimationGroup * group() const
If this animation is part of a QAnimationGroup, this function returns a pointer to the group; otherwi...
Q_CORE_EXPORT void qWarning(const char *,...)
The QAbstractAnimation class is the base of all animations.
QVariant startValue() const
The QMutexLocker class is a convenience class that simplifies locking and unlocking mutexes...
Definition: qmutex.h:101
void updateState(QAbstractAnimation::State newState, QAbstractAnimation::State oldState)
Reimplemented Function
int key
bool isValid() const
Returns true if the storage type of this variant is not QVariant::Invalid; otherwise returns false...
Definition: qvariant.h:485
#define qPrintable(string)
Definition: qglobal.h:1750
static QMutex * globalInstanceGet(const void *address)
Returns a QMutex from the global mutex pool.
Definition: qmutexpool.cpp:150

Properties

◆ propertyName

QByteArray QPropertyAnimation::propertyName
private

the target property name for this animation

This property defines the target property name for this animation. The property name is required for the animation to operate.

Definition at line 59 of file qpropertyanimation.h.

Referenced by QStateMachinePrivate::initializeAnimation().

◆ targetObject

QObject * QPropertyAnimation::targetObject
private

the target QObject for this animation.

This property defines the target QObject for this animation.

Definition at line 60 of file qpropertyanimation.h.

Referenced by QWidgetAnimator::animationFinished(), and QStateMachinePrivate::initializeAnimation().


The documentation for this class was generated from the following files: