QTimeLineLa classe QTimeLine fournit une ligne temporelle pour contr�ler les animations. Plus d'informations... #include <QTimeLine> Voir la position dans l'arbre des classes. H�ritageH�rite de QObject. Description d�taill�eLa classe QTimeLine fournit une ligne temporelle pour contr�ler les animations. Cela est plus g�n�ralement utilis� pour animer un contr�leur d'interface graphique en appelant un slot p�riodiquement. Vous pouvez construire une ligne temporelle en passant sa dur�e en millisecondes au constructeur de QTimeLine. La dur�e de la ligne temporelle d�crit pour combien de temps l'animation sera ex�cut�e. Ensuite vous modifiez la longueur de fen�tre suivante (une distance de frame appropri�e) en appelant setFrameRange(). Pour terminer, connectez le signal frameChanged() � un slot adapt� dans le widget que vous voulez animer (c'est-�-dire � setValue() dans QProgressBar). Lorsque vous proc�dez en appelant start(), QTimeLine entre dans l'�tat Running et commence � �mettre frameChanged() � intervalles r�guliers, (entra�nant l'augmentation de la valeur de la propri�t� de votre widget connect�, de l'extr�mit� inf�rieure � la partie sup�rieure de votre frame, � un taux constant). Vous pouvez sp�cifier l'intervalle de mise � jour en appelant setUpdateInterval(). Lorsqu'il a termin�, QTimeLine entre dans l'�tat NotRunning et �met finished(). Exemple : ... progressBar = new QProgressBar(this); progressBar->setRange(0, 100); // Constuit une ligne d'une seconde, allant de 0 � 100 QTimeLine *timeLine = new QTimeLine(1000, this); timeLine->setFrameRange(0, 100); connect(timeLine, SIGNAL(frameChanged(int)), progressBar, SLOT(setValue(int))); // Cliquer sur le bouton poussoir d�marrera l'animation de la barre de progression pushButton = new QPushButton(tr("Start animation"), this); connect(pushButton, SIGNAL(clicked()), timeLine, SLOT(start())); ... Vous pouvez �galement utiliser QTimeLine avec le framework Graphics View pour r�aliser des animations. La classe QGraphicsItemAnimation impl�mente l'animation des QGraphicsItems avec une ligne temporelle. Par d�faut, la ligne temporelle ne s'ex�cute qu'une seule fois, du d�but et en avant jusqu'� la fin. Vous devez appeler � nouveau start pour recommencer au d�but. Pour faire boucler la ligne temporelle, vous pouvez appeler setLoopCount(), en passant en param�tre le nombre de r�p�titions de la ligne temporelle. La direction peut �galement �tre chang�e, c'est-�-dire aller en l'arri�re, en appelant setDirection(). Vous pouvez �galement mettre en pause et retirer la pause de la ligne temporelle pendant son ex�cution en appelant setPaused(). Pour un contr�le interactif, la fonction setCurrentTime() est fournie, qui modifie directement la position du temps dans la ligne temporelle. Bien que ce soit dans l'�tat NotRunning qu'elle est la plus utile (c'est-�-dire connect�e � un signal valueChanged() dans un QSlider), cette fonction peut �tre appel�e � n'importe quel moment. L'interface de frame est utile pour des widgets standards, mais QTimeLine peut �tre utilis� pour contr�ler tout type d'animation. Le coeur de QTimeLine r�side dans la fonction valueForTime(), qui g�n�re une valeur entre 0 et 1 pour un temps donn�. Cette valeur est typiquement utilis�e pour d�crire les �tapes d'un animation, o� 0 en est la premi�re �tape, et 1 la derni�re. Quand elle est en cours d'ex�cution, QTimeLine g�n�re des valeurs entre 0 et 1 en appelant valueForTime() et en �mettant valueChanged(). Par d�faut, valueForTime() applique une interpolation algorithmique pour g�n�rer ces valeurs. Vous pouvez choisir � partir d'un ensemble d'algorithmes pr�d�fini de ligne temporelle en appelant setCurveShape(). Notez que, par d�faut, QTimeLine utilise la forme de la courbe EaseInOut, qui fournit une valeur qui grandit lentement, puis grandit r�guli�rement et, finalement, grandit lentement. Pour une ligne temporelle personnalis�e, vous pouvez r�impl�menter valueForTime(), dans ce cas, la propri�t� curveShape de QTimeLine est ignor�e. Voir aussi QProgressBar, QProgressDialog et QGraphicsItemAnimation. Typeenum QTimeLine::CurveShapeCette �num�ration d�crit la forme par d�faut de la courbe de valeur de QTimeLine. La forme par d�faut est EaseInOutCurve. La courbe d�finit la relation entre la valeur et la ligne temporelle.
Voir aussi setCurveShape(). enum QTimeLine::DirectionCette �num�ration d�crit la direction de la ligne temporelle quand elle est dans l'�tat Running.
Voir aussi setDirection(). enum QTimeLine::StateCette �num�ration d�crit l'�tat de la ligne temporelle.
Voir aussi state() et stateChanged(). Propri�t�scurrentTime : intCette propri�t� contient le temps courant de la ligne temporelle. Quand QTimeLine est dans l'�tat Running, cette valeur est mise � jour continuellement en fonction de la dur�e et de la direction de la ligne temporelle. Autrement, il s'agit de cette valeur qui �tait courante quand stop() a �t� appel� la derni�re fois ou de la valeur d�finie par setCurrentTime(). Par d�faut, cette propri�t� contient la valeur 0. Fonctions d'acc�sint currentTime () const curveShape : CurveShapeCette propri�t� contient la forme de la ligne temporelle. La forme de la courbe d�crit la relation entre le temps et la valeur pour l'impl�mentation de base de valueForTime(). Si vous avez r�impl�ment� valueForTime(), cette valeur est ignor�e. Par d�faut, cette propri�t� est d�finie � EaseInOutCurve. Fonctions d'acc�sCurveShape curveShape () const Voir aussi valueForTime(). direction : DirectionCette propri�t� contient la direction de la ligne temporelle quand QTimeLine est dans l'�tat Running. Cette direction indique si le temps se d�place de 0 vers la dur�e de la ligne temporelle ou de la dur�e jusqu'� 0, apr�s que start() ait �t� appel�e. Par d�faut, cette propri�t� est d�finit � Forward. Fonctions d'acc�sDirection direction () const duration : intCette propri�t� contient la dur�e totale de la ligne temporelle en millisecondes. Par d�faut, cette valeur est 1000 (soit une seconde), mais vous pouvez la changer, soit en passant une dur�e au constructeur de QTimeLine, soit en appelant setDuration(). La dur�e doit �tre sup�rieure � 0. Remarque : changer la dur�e ne remet pas le temps courant � 0 ou � la nouvelle dur�e. Vous devez �galement appeler setCurrentTime() avec la valeur d�sir�e. Fonctions d'acc�sint duration () const easingCurve : QEasingCurveSp�cifie l'assouplissement de la courbe que la ligne temporelle utilisera. Si, � la fois, l'assouplissement de la courbe et la forme de la courbe sont d�finis, la derni�re propri�t� d�finie �crasera la pr�c�dente. (Si valueForTime() a �t� r�implement�e, il �crasera les deux). Cette propri�t� a �t� introduite dans Qt 4.6. Fonctions d'acc�sQEasingCurve easingCurve () const loopCount : intCette propri�t� contient le nombre de fois que la ligne temporelle doit boucler avant de se terminer. Un compte de boucles de 0 signifie que la ligne temporelle bouclera ind�finiment. Par d�faut, cette propri�t� contient la valeur 1. Fonctions d'acc�sint loopCount () const updateInterval : intCette propri�t� contient l'intervalle de temps en millisecondes entre chaque mise � jour du temps courant de QTimeLine. Quand le temps courant est mis � jour, QTimeLine �met valueChanged() si la valeur courante a chang� et frameChanged() si la frame a chang�. Par d�faut, l'intervalle est de 40 ms, ce qui correspond � 25 mises � jour par seconde. Fonctions d'acc�sint updateInterval () const Fonctions membresQTimeLine::QTimeLine ( int duration = 1000, QObject * parent = 0 )Construit une ligne temporelle avec une dur�e de duration millisecondes. parent est pass� au constructeur de QObject. La dur�e par d�faut est de 1000 millisecondes. QTimeLine::~QTimeLine () [virtual]D�truit la ligne temporelle. int QTimeLine::currentFrame () constRetourne la frame correspondant au temps courant. Voir aussi currentTime(), frameForTime() et setFrameRange(). qreal QTimeLine::currentValue () constRetourne la valeur correspondante du temps courant. Voir aussi valueForTime() et currentFrame(). int QTimeLine::endFrame () constRetourne la derni�re frame, qui correspond � la frame de la fin de la ligne temporelle (c'est-�-dire la frame pour laquelle la valeur courante est 1). Voir aussi setEndFrame() et setFrameRange(). void QTimeLine::finished () [signal]Ce signal est �mis quand QTimeLine se termine (c'est-�-dire quand elle atteint la fin de la ligne temporelle) et ne boucle pas. void QTimeLine::frameChanged ( int frame ) [signal]QTimeLine �met ce signal � intervalle r�gulier lorsqu'elle se trouve dans l'�tat Running, mais seulement si la frame courante change. frame est le num�ro de la frame courante. Voir aussi setFrameRange() et updateInterval. int QTimeLine::frameForTime ( int msec ) constRetourne la frame correspondant au temps msec. Cette valeur est calcul�e en utilisant une interpolation lin�aire entre la frame de d�but et la frame de fin, bas�e sur la valeur retourn�e par valueForTime(). Voir aussi valueForTime() et setFrameRange(). void QTimeLine::resume () [slot]Reprend la ligne temporelle � partir du temps courant. QTimeLine retournera dans l'�tat Running et, une fois qu'elle entre dans la boucle d'�v�nements, elle mettra � jour son temps courant, sa frame et sa valeur � intervalles r�guliers. Contrairement � start(), cette fonction ne red�marre pas la ligne temporelle avant de reprendre. Voir aussi start(), updateInterval(), frameChanged() et valueChanged(). void QTimeLine::setEndFrame ( int frame )D�finit la frame de fin, la frame correspondant � la fin de la ligne temporelle (c'est-�-dire la frame pour laquelle la valeur courante est 1), � frame. Voir endFrame(), startFrame() et setFrameRange(). void QTimeLine::setFrameRange ( int startFrame, int endFrame )D�finit le compteur de frames de la ligne temporelle pour commencer � startFrame et terminer � endFrame. Pour chaque valeur de temps, QTimeLine trouvera la frame correspondante quand vous appelez currentFrame() ou frameForTime() par interpolation, en utilisant la valeur de retour de valueForTime(). Dans l'�tat Running, QTimeLine �met �galement le signal frameChanged() quand la frame change. Voir aussi startFrame(), endFrame(), start() et currentFrame(). void QTimeLine::setPaused ( bool paused ) [slot]Si paused est vrai, la ligne temporelle est mise en pause, mettant QTimeLine dans l'�tat Paused. Aucune mise � jour ne sera signal�e jusqu'� ce que start() ou setPaused(false) soit appel�. Si paused est faux, la ligne temporelle reprend et continue de l� o� elle s'�tait arr�t�e. Voir aussi state() et start(). void QTimeLine::setStartFrame ( int frame )D�finit la frame du d�but, la frame correspondant au d�but de la ligne temporelle (c'est-�-dire la frame pour laquelle la valeur courante est 0) � frame. Voir aussi startFrame(), endFrame() et setFrameRange(). void QTimeLine::start () [slot]D�marre la ligne temporelle. QTimeLine entrera dans l'�tat Running et, une fois qu'elle entre dans la boucle d'�v�nements, elle mettra � jour son temps courant, sa frame et sa valeur � intervalles r�guliers. L'intervalle par d�faut est de 40 ms (soit 25 fois par seconde). Vous pouvez changer l'intervalle de mise � jour en appelant setUpdateInterval(). La ligne temporelle d�marrera de la position 0 ou de la fin, si elle va dans le sens inverse. Si vous voulez reprendre une ligne temporelle arr�t�e sans red�marrer, vous pouvez appeler resume() � la place. Voir aussi resume(), updateInterval(), frameChanged() et valueChanged(). int QTimeLine::startFrame () constRetourne la frame du d�but, la frame correspondant au d�but de la ligne temporelle (c'est-�-dire la frame pour laquelle la valeur courante est 0). Voir aussi setStartFrame() et setFrameRange(). State QTimeLine::state () constRetourne l'�tat de la ligne temporelle. Voir aussi start(), setPaused() et stop(). void QTimeLine::stateChanged ( QTimeLine::State newState ) [signal]Ce signal est �mis quand l'�tat de QTimeLine change. Le nouvel �tat est newState. void QTimeLine::stop () [slot]Arr�te la ligne temporelle, faisant entrer QTimeLine dans l'�tat NotRunning. Voir aussi start(). void QTimeLine::timerEvent ( QTimerEvent * event ) [virtual protected]R�impl�mentation de QObject::timerEvent(). void QTimeLine::toggleDirection () [slot]Inverse la direction de la ligne temporelle. Si la direction �tait en avant, elle devient en arri�re, et vice versa. Voir aussi setDirection(). void QTimeLine::valueChanged ( qreal value ) [signal]QTimeLine �met ce signal � intervalle r�gulier lorsqu'elle est dans l'�tat Running, mais seulement si la valeur courante change. value est la valeur courante, un nombre entre 0.0 et 1.0. Voir aussi setDuration(), valueForTime() et updateInterval. qreal QTimeLine::valueForTime ( int msec ) const [virtual]R�tourne la valeur de la ligne temporelle pour le temps msec. La valeur retourn�e, qui d�pend de la forme de la courbe, est toujours entre 0 et 1. Si msec est 0, l'impl�mentation par d�faut retourne toujours 0. R�impl�mentez cette fonction pour fournir une forme de la courbe personnalis�e � votre ligne temporelle. Voir aussi CurveShape et frameForTime(). RemerciementsMerci � Jonathan Courtois pour la traduction et � Thibaut Cuvelier et � Jacques Thery pour la relecture ! |
Publicit�
Best OfActualit�s les plus luesSemaine
Mois
Ann�e
![]()
![]() Le blog Digia au hasard![]() Cr�er des applications avec un style Metro avec Qt, exemples en QML et C++, un article de Digia Qt traduit par Thibaut CuvelierLe 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 utilesContact
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 | |
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 ! |
Copyright © 2000-2012 - www.developpez.com