Auf dieser Seite

QTimeLine Class

Die Klasse „QTimeLine“ stellt eine Zeitleiste zur Steuerung von Animationen bereit. Mehr...

Header: #include <QTimeLine>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core
Erbt von: QObject

Öffentliche Typen

enum Direction { Forward, Backward }
enum State { NotRunning, Paused, Running }

Eigenschaften

Öffentliche Funktionen

QTimeLine(int duration = 1000, QObject *parent = nullptr)
virtual ~QTimeLine()
QBindable<int> bindableCurrentTime()
QBindable<QTimeLine::Direction> bindableDirection()
QBindable<int> bindableDuration()
QBindable<QEasingCurve> bindableEasingCurve()
QBindable<int> bindableLoopCount()
QBindable<int> bindableUpdateInterval()
int currentFrame() const
int currentTime() const
qreal currentValue() const
QTimeLine::Direction direction() const
int duration() const
QEasingCurve easingCurve() const
int endFrame() const
int frameForTime(int msec) const
int loopCount() const
void setDirection(QTimeLine::Direction direction)
void setDuration(int duration)
void setEasingCurve(const QEasingCurve &curve)
void setEndFrame(int frame)
void setFrameRange(int startFrame, int endFrame)
void setLoopCount(int count)
void setStartFrame(int frame)
void setUpdateInterval(int interval)
int startFrame() const
QTimeLine::State state() const
int updateInterval() const
virtual qreal valueForTime(int msec) const

Öffentliche Slots

void resume()
void setCurrentTime(int msec)
void setPaused(bool paused)
void start()
void stop()
void toggleDirection()

Signale

void finished()
void frameChanged(int frame)
void stateChanged(QTimeLine::State newState)
void valueChanged(qreal value)

Neu implementierte geschützte Funktionen

virtual void timerEvent(QTimerEvent *event) override

Detaillierte Beschreibung

Am häufigsten wird sie verwendet, um ein GUI-Steuerelement durch periodischen Aufruf eines Slots zu animieren. Sie können eine Zeitleiste erstellen, indem Sie deren Dauer in Millisekunden an den Konstruktor von `QTimeLine` übergeben. Die Dauer der Zeitleiste gibt an, wie lange die Animation laufen soll. Anschließend legen Sie einen geeigneten Frame-Bereich fest, indem Sie ` setFrameRange()` aufrufen. Verbinden Sie schließlich das Signal ` frameChanged()` mit einem geeigneten Slot in dem Widget, das Sie animieren möchten (zum Beispiel ` setValue()` in ` QProgressBar`). Wenn Sie anschließend start() aufrufen, wechselt QTimeLine in den Zustand „Running“ und beginnt, in regelmäßigen Abständen frameChanged() auszugeben, wodurch der Wert der verbundenen Eigenschaft Ihres Widgets mit konstanter Geschwindigkeit vom unteren zum oberen Ende Ihres Bildbereichs ansteigt. Sie können das Aktualisierungsintervall festlegen, indem Sie ` setUpdateInterval()` aufrufen. Anschließend wechselt QTimeLine in den Zustand „ NotRunning “ und sendet ` finished()` aus.

Beispiel:

//...
auto progressBar = new QProgressBar(this);
progressBar->setRange(0, 100);

// Construct a 1-second timeline with a frame range of 0 - 100
QTimeLine *timeLine = new QTimeLine(1000, this);
timeLine->setFrameRange(0, 100);
connect(timeLine, &QTimeLine::frameChanged, progressBar, &QProgressBar::setValue);

// Clicking the push button will start the progress bar animation
auto pushButton = new QPushButton(tr("Start animation"), this);
connect(pushButton, &QPushButton::clicked, timeLine, &QTimeLine::start);
//...

Standardmäßig läuft die Zeitleiste einmalig vom Anfang bis zum Ende. Anschließend müssen Sie „ start()“ erneut aufrufen, um den Vorgang von vorne zu starten. Um die Zeitleiste in einer Schleife laufen zu lassen, können Sie „ setLoopCount()“ aufrufen und dabei die Anzahl der Durchläufe angeben, die die Zeitleiste vor dem Beenden ausführen soll. Die Laufrichtung kann ebenfalls geändert werden, sodass die Zeitleiste rückwärts läuft, indem Sie „ setDirection()“ aufrufen. Sie können die Zeitleiste während der Wiedergabe auch anhalten und fortsetzen, indem Sie ` setPaused()` aufrufen. Für die interaktive Steuerung steht die Funktion ` setCurrentTime()` zur Verfügung, die die Zeitposition der Zeitleiste direkt festlegt. Obwohl diese Funktion im Status ` NotRunning ` am nützlichsten ist (z. B. bei Verbindung mit einem ` valueChanged()`-Signal in einem ` QSlider`), kann sie jederzeit aufgerufen werden.

Die Frame-Schnittstelle ist für Standard-Widgets nützlich, aber QTimeLine kann zur Steuerung jeder Art von Animation verwendet werden. Das Herzstück von QTimeLine ist die Funktion „ valueForTime()“, die für einen bestimmten Zeitpunkt einen Wert zwischen 0 und 1 generiert. Dieser Wert wird typischerweise verwendet, um die Schritte einer Animation zu beschreiben, wobei 0 der erste Schritt einer Animation und 1 der letzte Schritt ist. Während der Ausführung generiert QTimeLine Werte zwischen 0 und 1, indem es „ valueForTime()“ aufruft und „ valueChanged()“ ausgibt. Standardmäßig wendet „ valueForTime()“ einen Interpolationsalgorithmus an, um diese Werte zu generieren. Sie können aus einer Reihe vordefinierter Zeitachsenalgorithmen wählen, indem Sie „ setEasingCurve()“ aufrufen.

Beachten Sie, dass QTimeLine standardmäßig QEasingCurve::InOutSine verwendet, das einen Wert liefert, der zunächst langsam, dann stetig und schließlich wieder langsam ansteigt. Für eine benutzerdefinierte Zeitleiste können Sie valueForTime() neu implementieren; in diesem Fall wird die Eigenschaft easingCurve von QTimeLine ignoriert.

Siehe auch „ QProgressBar “ und „ QProgressDialog “.

Dokumentation zu Mitgliedstypen

enum QTimeLine::Direction

Diese Enumeration beschreibt die Richtung der Zeitleiste im Zustand „ Running “.

KonstanteWertBeschreibung
QTimeLine::Forward0Die aktuelle Zeit der Zeitleiste nimmt mit der Zeit zu (d. h., sie bewegt sich von 0 aus in Richtung des Endes bzw. der Dauer).
QTimeLine::Backward1Die aktuelle Zeit der Zeitleiste nimmt mit der Zeit ab (d. h., sie bewegt sich vom Ende bzw. der Dauer in Richtung 0).

Siehe auch „ setDirection()“.

enum QTimeLine::State

Diese Enumeration beschreibt den Zustand der Zeitleiste.

KonstanteWertBeschreibung
QTimeLine::NotRunning0Die Zeitleiste läuft nicht. Dies ist der Anfangszustand von „ QTimeLine “, und der Zustand „ QTimeLine “ wird nach Abschluss des Vorgangs wieder aufgenommen. Die aktuelle Zeit, der Frame und der Wert bleiben unverändert, bis entweder „ setCurrentTime()“ aufgerufen wird oder die Zeitleiste durch Aufruf von „ start()“ gestartet wird.
QTimeLine::Paused1Die Zeitleiste ist angehalten (d. h., vorübergehend unterbrochen). Durch den Aufruf von ` setPaused(false)` wird die Aktivität der Zeitleiste fortgesetzt.
QTimeLine::Running2Die Zeitleiste läuft. Solange sich die Steuerung in der Ereignisschleife befindet, aktualisiert „ QTimeLine “ in regelmäßigen Abständen die aktuelle Zeit und löst gegebenenfalls „ valueChanged()“ und „ frameChanged()“ aus.

Siehe auch „ state()“ und „ stateChanged()“.

Dokumentation zu den Eigenschaften

[bindable] currentTime : int

Hinweis: Diese Eigenschaft unterstützt „ QProperty “-Bindungen.

Diese Eigenschaft enthält die aktuelle Zeit der Zeitleiste.

Befindet sich „ QTimeLine “ im Status „Running“, wird dieser Wert kontinuierlich in Abhängigkeit von der Dauer und Richtung der Zeitleiste aktualisiert. Andernfalls entspricht er dem Wert, der beim letzten Aufruf von „ stop()“ aktuell war, oder dem durch „setCurrentTime()“ festgelegten Wert.

Hinweis: Sie können andere Eigenschaften an „currentTime“ binden, es wird jedoch nicht empfohlen, Bindungen daran festzulegen. Im Verlauf der Animation wird „currentTime“ automatisch aktualisiert, wodurch die Bindungen aufgehoben werden.

Standardmäßig enthält diese Eigenschaft den Wert 0.

Zugriffsfunktionen:

int currentTime() const
void setCurrentTime(int msec)

[bindable] direction : Direction

Hinweis: Diese Eigenschaft unterstützt „ QProperty “-Bindungen.

Diese Eigenschaft gibt die Richtung der Zeitleiste an, wenn sich „ QTimeLine “ im Zustand „ Running “ befindet.

Diese Richtung gibt an, ob die Zeit nach dem Aufruf von ` start()` von 0 in Richtung der Timeline-Dauer verläuft oder vom Wert der Dauer in Richtung 0.

Jede Bindung der Richtung wird nicht nur durch „setDirection()“, sondern auch durch „ toggleDirection()“ entfernt.

Standardmäßig ist diese Eigenschaft auf „ Forward “ gesetzt.

Zugriffsfunktionen:

QTimeLine::Direction direction() const
void setDirection(QTimeLine::Direction direction)

[bindable] duration : int

Hinweis: Diese Eigenschaft unterstützt „ QProperty “-Bindungen.

Diese Eigenschaft enthält die Gesamtdauer der Zeitleiste in Millisekunden.

Standardmäßig beträgt dieser Wert 1000 (d. h. 1 Sekunde), Sie können ihn jedoch ändern, indem Sie entweder eine Dauer an den Konstruktor von ` QTimeLine` übergeben oder die Methode `setDuration()` aufrufen. Die Dauer muss größer als 0 sein.

Hinweis: Durch das Ändern der Dauer wird die aktuelle Zeit nicht auf Null oder die neue Dauer zurückgesetzt. Sie müssen außerdem ` setCurrentTime()` mit dem gewünschten Wert aufrufen.

Zugriffsfunktionen:

int duration() const
void setDuration(int duration)

[bindable] easingCurve : QEasingCurve

Hinweis: Diese Eigenschaft unterstützt „ QProperty “-Bindungen.

Legt die Easing-Kurve fest, die die Zeitleiste verwenden soll. Wenn „ valueForTime()“ neu implementiert wird, wird dieser Wert ignoriert.

Zugriffsfunktionen:

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

Siehe auch ` valueForTime()`.

[bindable] loopCount : int

Hinweis: Diese Eigenschaft unterstützt „ QProperty “-Bindungen.

Diese Eigenschaft gibt an, wie oft die Zeitleiste wiederholt werden soll, bevor sie endet.

Eine Schleifenanzahl von 0 bedeutet, dass die Zeitleiste endlos wiederholt wird.

Standardmäßig enthält diese Eigenschaft den Wert 1.

Zugriffsfunktionen:

int loopCount() const
void setLoopCount(int count)

[bindable] updateInterval : int

Hinweis: Diese Eigenschaft unterstützt „ QProperty “-Bindungen.

Diese Eigenschaft enthält die Zeit in Millisekunden zwischen den einzelnen Aktualisierungen der aktuellen Zeit durch „ QTimeLine “.

Bei der Aktualisierung der aktuellen Zeit löst „ QTimeLine “ die Ereignisse „ valueChanged()“ aus, wenn sich der aktuelle Wert geändert hat, und „ frameChanged()“, wenn sich der Frame geändert hat.

Standardmäßig beträgt das Intervall 40 ms, was einer Rate von 25 Aktualisierungen pro Sekunde entspricht.

Zugriffsfunktionen:

int updateInterval() const
void setUpdateInterval(int interval)

Dokumentation zu den Mitgliedsfunktionen

[explicit] QTimeLine::QTimeLine(int duration = 1000, QObject *parent = nullptr)

Erstellt eine Zeitleiste mit einer Dauer von duration Millisekunden. parent wird an den Konstruktor von QObject übergeben. Die Standarddauer beträgt 1000 Millisekunden.

[virtual noexcept] QTimeLine::~QTimeLine()

Zerstört die Zeitleiste.

int QTimeLine::currentFrame() const

Gibt den Frame zurück, der dem aktuellen Zeitpunkt entspricht.

Siehe auch currentTime(), frameForTime() und setFrameRange().

qreal QTimeLine::currentValue() const

Gibt den Wert zurück, der der aktuellen Uhrzeit entspricht.

Siehe auch valueForTime() und currentFrame().

int QTimeLine::endFrame() const

Gibt das Endbild zurück, d. h. das Bild, das dem Ende der Zeitachse entspricht (d. h. das Bild, für das der aktuelle Wert 1 ist).

Siehe auch setEndFrame() und setFrameRange().

[private signal] void QTimeLine::finished()

Dieses Signal wird ausgegeben, wenn „ QTimeLine “ beendet ist (d. h. das Ende seiner Zeitleiste erreicht hat), und wird nicht wiederholt.

Hinweis: Dies ist ein privates Signal. Es kann in Signalverbindungen verwendet werden, kann jedoch nicht vom Benutzer ausgelöst werden.

[private signal] void QTimeLine::frameChanged(int frame)

QTimeLine sendet dieses Signal im Zustand „ Running “ in regelmäßigen Abständen, jedoch nur, wenn sich der aktuelle Frame ändert. „ frame “ ist die aktuelle Frame-Nummer.

Hinweis: Dies ist ein privates Signal. Es kann in Signalverbindungen verwendet werden, kann jedoch nicht vom Benutzer ausgelöst werden.

Siehe auch „ QTimeLine::setFrameRange()“ und „ QTimeLine::updateInterval “.

int QTimeLine::frameForTime(int msec) const

Gibt den Frame zurück, der dem Zeit msec entspricht. Dieser Wert wird anhand einer linearen Interpolation des Start- und End-Frames berechnet, basierend auf dem von valueForTime() zurückgegebenen Wert.

Siehe auch valueForTime() und setFrameRange().

[slot] void QTimeLine::resume()

Setzt die Zeitleiste ab dem aktuellen Zeitpunkt fort. „ QTimeLine “ wechselt wieder in den Status „Running“ und aktualisiert, sobald es in die Ereignisschleife eintritt, in regelmäßigen Abständen die aktuelle Zeit, den Frame und den Wert.

Im Gegensatz zu ` start()` startet diese Funktion die Zeitleiste vor der Fortsetzung nicht neu.

Siehe auch „ start()“, „ updateInterval()“, „ frameChanged()“ und „ valueChanged()“.

void QTimeLine::setEndFrame(int frame)

Setzt den Endframe – also den Frame, der dem Ende der Zeitleiste entspricht (d. h. den Frame, für den der aktuelle Wert 1 ist) – auf „ frame “.

Siehe auch „ endFrame()“, „ startFrame()“ und „ setFrameRange()“.

void QTimeLine::setFrameRange(int startFrame, int endFrame)

Setzt den Frame-Zähler der Zeitleiste so, dass er bei startFrame beginnt und bei endFrame endet. Für jeden Zeitwert ermittelt QTimeLine den entsprechenden Frame, wenn Sie currentFrame() oder frameForTime() aufrufen, und zwar durch Interpolation unter Verwendung des Rückgabewerts von valueForTime().

Im Status „Running“ sendet QTimeLine außerdem das Signal „ frameChanged()“, wenn sich der Frame ändert.

Siehe auch startFrame(), endFrame(), start() und currentFrame().

[slot] void QTimeLine::setPaused(bool paused)

Wenn „ paused “ wahr ist, wird die Zeitleiste angehalten, wodurch „ QTimeLine “ in den Status „Paused“ wechselt. Es werden keine Aktualisierungen gemeldet, bis entweder „ start()“ oder „setPaused(false)“ aufgerufen wird. Wenn „ paused “ falsch ist, wird die Zeitleiste fortgesetzt und läuft dort weiter, wo sie unterbrochen wurde.

Siehe auch „ state()“ und „ start()“.

void QTimeLine::setStartFrame(int frame)

Setzt den Startframe – also den Frame, der dem Anfang der Zeitleiste entspricht (d. h. den Frame, für den der aktuelle Wert 0 ist) – auf frame.

Siehe auch startFrame(), endFrame() und setFrameRange().

[slot] void QTimeLine::start()

Startet die Zeitleiste. „ QTimeLine “ wechselt in den Status „Running“ und aktualisiert, sobald es in die Ereignisschleife eintritt, in regelmäßigen Abständen die aktuelle Zeit, den Frame und den Wert. Das Standardintervall beträgt 40 ms (d. h. 25 Mal pro Sekunde). Sie können das Aktualisierungsintervall ändern, indem Sie „ setUpdateInterval()“ aufrufen.

Die Zeitleiste beginnt bei Position 0 oder, bei Rücklauf, am Ende. Wenn Sie eine angehaltene Zeitleiste fortsetzen möchten, ohne sie neu zu starten, können Sie stattdessen resume() aufrufen.

Siehe auch resume(), updateInterval(), frameChanged() und valueChanged().

int QTimeLine::startFrame() const

Gibt den Start-Frame zurück, d. h. den Frame, der dem Anfang der Zeitleiste entspricht (d. h. den Frame, für den der aktuelle Wert 0 ist).

Siehe auch setStartFrame() und setFrameRange().

QTimeLine::State QTimeLine::state() const

Gibt den Status der Zeitleiste zurück.

Siehe auch „ start()“, „ setPaused()“ und „ stop()“.

[private signal] void QTimeLine::stateChanged(QTimeLine::State newState)

Dieses Signal wird immer dann ausgelöst, wenn sich der Zustand von ` QTimeLine` ändert. Der neue Zustand ist ` newState`.

Hinweis: Dies ist ein privates Signal. Es kann in Signalverbindungen verwendet werden, kann jedoch nicht vom Benutzer ausgelöst werden.

[slot] void QTimeLine::stop()

Hält die Zeitleiste an, wodurch „ QTimeLine “ in den Status „ NotRunning “ wechselt.

Siehe auch start().

[override virtual protected] void QTimeLine::timerEvent(QTimerEvent *event)

Implementiert: ` QObject::timerEvent(QTimerEvent *event)`.

[slot] void QTimeLine::toggleDirection()

Schaltet die Richtung der Zeitleiste um. Wenn die Richtung „Vorwärts“ war, wird sie zu „Rückwärts“ und umgekehrt.

Bestehende Zuordnungen von „ direction “ werden entfernt.

Siehe auch „ setDirection()“.

[private signal] void QTimeLine::valueChanged(qreal value)

QTimeLine sendet dieses Signal in regelmäßigen Abständen, wenn es sich im Zustand „ Running “ befindet, jedoch nur, wenn sich der aktuelle Wert ändert. „ value “ ist der aktuelle Wert. „ value “ ist eine Zahl zwischen 0,0 und 1,0

Hinweis: Dies ist ein privates Signal. Es kann in Signalverbindungen verwendet werden, darf jedoch nicht vom Benutzer ausgelöst werden.

Siehe auch „ QTimeLine::setDuration()“, „ QTimeLine::valueForTime()“ und „ QTimeLine::updateInterval “.

[virtual] qreal QTimeLine::valueForTime(int msec) const

Gibt den Zeitachsenwert für den Zeit msec zurück. Der zurückgegebene Wert, der je nach Kurvenform variiert, liegt immer zwischen 0 und 1. Wenn msec gleich 0 ist, gibt die Standardimplementierung immer 0 zurück.

Implementieren Sie diese Funktion neu, um eine benutzerdefinierte Kurvenform für Ihre Zeitleiste bereitzustellen.

Siehe auch ` easingCurve ` und ` frameForTime()`.

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.