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

The QParallelAnimationGroup class provides a parallel group of animations. More...

#include <qparallelanimationgroup.h>

Inheritance diagram for QParallelAnimationGroup:
QAnimationGroup QAbstractAnimation QObject ParallelAnimationWrapper

Public Functions

int duration () const
 Reimplemented Function More...
 
 QParallelAnimationGroup (QObject *parent=0)
 Constructs a QParallelAnimationGroup. More...
 
 ~QParallelAnimationGroup ()
 Destroys the animation group. More...
 
- Public Functions inherited from QAnimationGroup
void addAnimation (QAbstractAnimation *animation)
 Adds animation to this group. More...
 
QAbstractAnimationanimationAt (int index) const
 Returns a pointer to the animation at index in this group. More...
 
int animationCount () const
 Returns the number of animations managed by this group. More...
 
void clear ()
 Removes and deletes all animations in this animation group, and resets the current time to 0. More...
 
int indexOfAnimation (QAbstractAnimation *animation) const
 Returns the index of animation. More...
 
void insertAnimation (int index, QAbstractAnimation *animation)
 Inserts animation into this animation group at index. More...
 
 QAnimationGroup (QObject *parent=0)
 Constructs a QAnimationGroup. More...
 
void removeAnimation (QAbstractAnimation *animation)
 Removes animation from this group. More...
 
QAbstractAnimationtakeAnimation (int index)
 Returns the animation at index and removes it from the animation group. More...
 
 ~QAnimationGroup ()
 Destroys the animation group. 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...
 
 QParallelAnimationGroup (QParallelAnimationGroupPrivate &dd, QObject *parent)
 
void updateCurrentTime (int currentTime)
 Reimplemented Function More...
 
void updateDirection (QAbstractAnimation::Direction direction)
 Reimplemented Function More...
 
void updateState (QAbstractAnimation::State newState, QAbstractAnimation::State oldState)
 Reimplemented Function More...
 
- Protected Functions inherited from QAnimationGroup
 QAnimationGroup (QAnimationGroupPrivate &dd, QObject *parent)
 
- Protected Functions inherited from QAbstractAnimation
 QAbstractAnimation (QAbstractAnimationPrivate &dd, QObject *parent=0)
 
- 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...
 

Additional Inherited Members

- 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 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 QParallelAnimationGroup class provides a parallel group of animations.

Since
4.6

QParallelAnimationGroup–a container for animations–starts all its animations when it is started itself, i.e., runs all animations in parallel. The animation group finishes when the longest lasting animation has finished.

You can treat QParallelAnimation as any other QAbstractAnimation, e.g., pause, resume, or add it to other animation groups.

In this example, anim1 and anim2 are two QPropertyAnimation that have already been set up.

See also
QAnimationGroup, QPropertyAnimation, {The Animation Framework}

Definition at line 56 of file qparallelanimationgroup.h.

Constructors and Destructors

◆ QParallelAnimationGroup() [1/2]

QParallelAnimationGroup::QParallelAnimationGroup ( QObject parent = 0)

Constructs a QParallelAnimationGroup.

parent is passed to QObject's constructor.

Definition at line 86 of file qparallelanimationgroup.cpp.

88 {
89 }
QAnimationGroup(QObject *parent=0)
Constructs a QAnimationGroup.

◆ ~QParallelAnimationGroup()

QParallelAnimationGroup::~QParallelAnimationGroup ( )

Destroys the animation group.

It will also destroy all its animations.

Definition at line 103 of file qparallelanimationgroup.cpp.

104 {
105 }

◆ QParallelAnimationGroup() [2/2]

QParallelAnimationGroup::QParallelAnimationGroup ( QParallelAnimationGroupPrivate dd,
QObject parent 
)
protected
Warning
This function is not part of the public interface.

Definition at line 94 of file qparallelanimationgroup.cpp.

96  : QAnimationGroup(dd, parent)
97 {
98 }
QAnimationGroup(QObject *parent=0)
Constructs a QAnimationGroup.

Functions

◆ duration()

int QParallelAnimationGroup::duration ( ) const
virtual

Reimplemented Function

Implements QAbstractAnimation.

Definition at line 110 of file qparallelanimationgroup.cpp.

Referenced by updateCurrentTime(), updateDirection(), and ParallelAnimationWrapper::updateState().

111 {
113  int ret = 0;
114 
115  for (int i = 0; i < d->animations.size(); ++i) {
116  QAbstractAnimation *animation = d->animations.at(i);
117  const int currentDuration = animation->totalDuration();
118  if (currentDuration == -1)
119  return -1; // Undetermined length
120 
121  ret = qMax(ret, currentDuration);
122  }
123 
124  return ret;
125 }
double d
Definition: qnumeric_p.h:62
int totalDuration() const
Returns the total and effective duration of the animation, including the loop count.
#define Q_D(Class)
Definition: qglobal.h:2482
Q_DECL_CONSTEXPR const T & qMax(const T &a, const T &b)
Definition: qglobal.h:1217
The QAbstractAnimation class is the base of all animations.
The QParallelAnimationGroup class provides a parallel group of animations.

◆ event()

bool QParallelAnimationGroup::event ( QEvent event)
protectedvirtual

Reimplemented Function

Reimplemented from QAnimationGroup.

Definition at line 340 of file qparallelanimationgroup.cpp.

341 {
342  return QAnimationGroup::event(event);
343 }
bool event(QEvent *event)
Reimplemented Function

◆ updateCurrentTime()

void QParallelAnimationGroup::updateCurrentTime ( int  currentTime)
protectedvirtual

Reimplemented Function

Implements QAbstractAnimation.

Definition at line 130 of file qparallelanimationgroup.cpp.

131 {
133  if (d->animations.isEmpty())
134  return;
135 
136  if (d->currentLoop > d->lastLoop) {
137  // simulate completion of the loop
138  int dura = duration();
139  if (dura > 0) {
140  for (int i = 0; i < d->animations.size(); ++i) {
141  QAbstractAnimation *animation = d->animations.at(i);
142  if (animation->state() != QAbstractAnimation::Stopped)
143  d->animations.at(i)->setCurrentTime(dura); // will stop
144  }
145  }
146  } else if (d->currentLoop < d->lastLoop) {
147  // simulate completion of the loop seeking backwards
148  for (int i = 0; i < d->animations.size(); ++i) {
149  QAbstractAnimation *animation = d->animations.at(i);
150  //we need to make sure the animation is in the right state
151  //and then rewind it
152  d->applyGroupState(animation);
153  animation->setCurrentTime(0);
154  animation->stop();
155  }
156  }
157 
158 #ifdef QANIMATION_DEBUG
159  qDebug("QParallellAnimationGroup %5d: setCurrentTime(%d), loop:%d, last:%d, timeFwd:%d, lastcurrent:%d, %d",
160  __LINE__, d->currentTime, d->currentLoop, d->lastLoop, timeFwd, d->lastCurrentTime, state());
161 #endif
162  // finally move into the actual time of the current loop
163  for (int i = 0; i < d->animations.size(); ++i) {
164  QAbstractAnimation *animation = d->animations.at(i);
165  const int dura = animation->totalDuration();
166  //if the loopcount is bigger we should always start all animations
167  if (d->currentLoop > d->lastLoop
168  //if we're at the end of the animation, we need to start it if it wasn't already started in this loop
169  //this happens in Backward direction where not all animations are started at the same time
170  || d->shouldAnimationStart(animation, d->lastCurrentTime > dura /*startIfAtEnd*/)) {
171  d->applyGroupState(animation);
172  }
173 
174  if (animation->state() == state()) {
175  animation->setCurrentTime(currentTime);
176  if (dura > 0 && currentTime > dura)
177  animation->stop();
178  }
179  }
180  d->lastLoop = d->currentLoop;
181  d->lastCurrentTime = currentTime;
182 }
double d
Definition: qnumeric_p.h:62
int totalDuration() const
Returns the total and effective duration of the animation, including the loop count.
State state() const
#define Q_D(Class)
Definition: qglobal.h:2482
State state
state of the animation.
void stop()
Stops the animation.
int currentTime() const
Q_CORE_EXPORT void qDebug(const char *,...)
The QAbstractAnimation class is the base of all animations.
The QParallelAnimationGroup class provides a parallel group of animations.
void setCurrentTime(int msecs)
int duration() const
Reimplemented Function

◆ updateDirection()

void QParallelAnimationGroup::updateDirection ( QAbstractAnimation::Direction  direction)
protectedvirtual

Reimplemented Function

Reimplemented from QAbstractAnimation.

Definition at line 316 of file qparallelanimationgroup.cpp.

317 {
319  //we need to update the direction of the current animation
320  if (state() != Stopped) {
321  for (int i = 0; i < d->animations.size(); ++i) {
322  QAbstractAnimation *animation = d->animations.at(i);
323  animation->setDirection(direction);
324  }
325  } else {
326  if (direction == Forward) {
327  d->lastLoop = 0;
328  d->lastCurrentTime = 0;
329  } else {
330  // Looping backwards with loopCount == -1 does not really work well...
331  d->lastLoop = (d->loopCount == -1 ? 0 : d->loopCount - 1);
332  d->lastCurrentTime = duration();
333  }
334  }
335 }
double d
Definition: qnumeric_p.h:62
State state() const
#define Q_D(Class)
Definition: qglobal.h:2482
void setDirection(Direction direction)
The QAbstractAnimation class is the base of all animations.
The QParallelAnimationGroup class provides a parallel group of animations.
Direction direction() const
int duration() const
Reimplemented Function

◆ updateState()

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

Reimplemented Function

Reimplemented from QAbstractAnimation.

Reimplemented in ParallelAnimationWrapper.

Definition at line 187 of file qparallelanimationgroup.cpp.

Referenced by ParallelAnimationWrapper::updateState().

189 {
191  QAnimationGroup::updateState(newState, oldState);
192 
193  switch (newState) {
194  case Stopped:
195  for (int i = 0; i < d->animations.size(); ++i)
196  d->animations.at(i)->stop();
197  d->disconnectUncontrolledAnimations();
198  break;
199  case Paused:
200  for (int i = 0; i < d->animations.size(); ++i)
201  if (d->animations.at(i)->state() == Running)
202  d->animations.at(i)->pause();
203  break;
204  case Running:
205  d->connectUncontrolledAnimations();
206  for (int i = 0; i < d->animations.size(); ++i) {
207  QAbstractAnimation *animation = d->animations.at(i);
208  if (oldState == Stopped)
209  animation->stop();
210  animation->setDirection(d->direction);
211  if (d->shouldAnimationStart(animation, oldState == Stopped))
212  animation->start();
213  }
214  break;
215  }
216 }
double d
Definition: qnumeric_p.h:62
void start(QAbstractAnimation::DeletionPolicy policy=KeepWhenStopped)
Starts the animation.
#define Q_D(Class)
Definition: qglobal.h:2482
void stop()
Stops the animation.
void setDirection(Direction direction)
The QAbstractAnimation class is the base of all animations.
The QParallelAnimationGroup class provides a parallel group of animations.
virtual void updateState(QAbstractAnimation::State newState, QAbstractAnimation::State oldState)
This virtual function is called by QAbstractAnimation when the state of the animation is changed from...

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