QMovie Class
Die Klasse „QMovie“ ist eine Hilfsklasse zum Abspielen von Filmen mit „ QImageReader “. Mehr...
| Header: | #include <QMovie> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Gui) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
| qmake: | QT += gui |
| Erbt von: | QObject |
Öffentliche Typen
| enum | CacheMode { CacheNone, CacheAll } |
| enum | MovieState { NotRunning, Paused, Running } |
Eigenschaften
Öffentliche Funktionen
| QMovie(QObject *parent = nullptr) | |
| QMovie(QIODevice *device, const QByteArray &format = QByteArray(), QObject *parent = nullptr) | |
| QMovie(const QString &fileName, const QByteArray &format = QByteArray(), QObject *parent = nullptr) | |
| virtual | ~QMovie() |
| QColor | backgroundColor() const |
| QBindable<QMovie::CacheMode> | bindableCacheMode() |
| QBindable<int> | bindableSpeed() |
| QMovie::CacheMode | cacheMode() const |
| int | currentFrameNumber() const |
| QImage | currentImage() const |
| QPixmap | currentPixmap() const |
| QIODevice * | device() const |
| QString | fileName() const |
| QByteArray | format() const |
| int | frameCount() const |
| QRect | frameRect() const |
| bool | isValid() const |
| bool | jumpToFrame(int frameNumber) |
| QImageReader::ImageReaderError | lastError() const |
| QString | lastErrorString() const |
| int | loopCount() const |
| int | nextFrameDelay() const |
| QSize | scaledSize() |
| void | setBackgroundColor(const QColor &color) |
| void | setCacheMode(QMovie::CacheMode mode) |
| void | setDevice(QIODevice *device) |
| void | setFileName(const QString &fileName) |
| void | setFormat(const QByteArray &format) |
| void | setScaledSize(const QSize &size) |
| int | speed() const |
| QMovie::MovieState | state() const |
Öffentliche Slots
| bool | jumpToNextFrame() |
| void | setPaused(bool paused) |
| void | setSpeed(int percentSpeed) |
| void | start() |
| void | stop() |
Signale
| void | error(QImageReader::ImageReaderError error) |
| void | finished() |
| void | frameChanged(int frameNumber) |
| void | resized(const QSize &size) |
| void | started() |
| void | stateChanged(QMovie::MovieState state) |
| void | updated(const QRect &rect) |
Statische öffentliche Mitglieder
| QList<QByteArray> | supportedFormats() |
Ausführliche Beschreibung
Diese Klasse dient zur Darstellung einfacher Animationen ohne Ton.
Erstellen Sie zunächst ein QMovie-Objekt, indem Sie entweder den Namen einer Datei oder einen Zeiger auf eine ` QIODevice `, die ein animiertes Bildformat enthält, an den Konstruktor von `QMovie` übergeben. Sie können ` isValid()` aufrufen, um vor dem Start des Films zu prüfen, ob die Bilddaten gültig sind. Um den Film zu starten, rufen Sie ` start()` auf. QMovie wechselt in den Zustand „ Running “ und gibt die Signale ` started()` und ` stateChanged()` aus. Um den aktuellen Zustand des Films abzurufen, rufen Sie ` state()` auf.
Um den Film in Ihrer Anwendung anzuzeigen, können Sie Ihr QMovie-Objekt an ` QLabel::setMovie()` übergeben. Beispiel:
QLabel label;
QMovie *movie = new QMovie("animations/fire.gif");
label.setMovie(movie);
movie->start();Sobald ein neuer Frame im Film verfügbar ist, löst QMovie die Methode „ updated()“ aus. Ändert sich die Größe des Frames, wird „ resized()“ ausgelöst. Sie können ` currentImage()` oder ` currentPixmap()` aufrufen, um eine Kopie des aktuellen Bildes zu erhalten. Wenn der Film zu Ende ist, sendet QMovie ` finished()` aus. Tritt während der Wiedergabe ein Fehler auf (z. B. ist die Bilddatei beschädigt), sendet QMovie ` error()` aus.
Sie können die Wiedergabegeschwindigkeit des Films steuern, indem Sie ` setSpeed()` aufrufen, wobei der Prozentsatz der ursprünglichen Geschwindigkeit als Argument übergeben wird. Halten Sie den Film an, indem Sie „ setPaused(true)“ aufrufen. QMovie wechselt dann in den Zustand „ Paused “ und gibt „ stateChanged()“ aus. Wenn Sie „ setPaused(false)“ aufrufen, kehrt QMovie in den Zustand „ Running “ zurück und startet den Film erneut. Um den Film zu beenden, rufen Sie „ stop()“ auf.
Bei bestimmten Animationsformaten können Sie die Hintergrundfarbe festlegen. Rufen Sie „ setBackgroundColor()“ auf, um die Farbe festzulegen, oder „ backgroundColor()“, um die aktuelle Hintergrundfarbe abzurufen.
currentFrameNumber() gibt die Sequenznummer des aktuellen Bildes zurück. Das erste Bild der Animation hat die Sequenznummer 0. frameCount() gibt die Gesamtzahl der Bilder in der Animation zurück, sofern das Bildformat dies unterstützt. Mit dem Aufruf von loopCount() können Sie die Anzahl der Wiederholungen abrufen, die der Film vor dem Ende durchlaufen soll. nextFrameDelay() gibt die Anzahl der Millisekunden zurück, die das aktuelle Bild angezeigt werden soll.
QMovie kann durch den Aufruf von ` setCacheMode()` angewiesen werden, Frames einer Animation zwischenzuspeichern.
Rufen Sie supportedFormats() auf, um eine Liste der von QMovie unterstützten Formate zu erhalten.
Siehe auch QLabel und QImageReader.
Dokumentation zu den Mitgliedstypen
enum QMovie::CacheMode
Diese Enumeration beschreibt die verschiedenen Cache-Modi von QMovie.
| Konstante | Wert | Beschreibung |
|---|---|---|
QMovie::CacheNone | 0 | Es werden keine Frames zwischengespeichert (Standard). |
QMovie::CacheAll | 1 | Alle Frames werden zwischengespeichert. |
enum QMovie::MovieState
Diese Enumeration beschreibt die verschiedenen Zustände von „ QMovie “.
| Konstante | Wert | Beschreibung |
|---|---|---|
QMovie::NotRunning | 0 | Der Film wird nicht abgespielt. Dies ist der Anfangszustand von „ QMovie “ sowie der Zustand, in den er wechselt, nachdem „ stop()“ aufgerufen wurde oder der Film zu Ende ist. |
QMovie::Paused | 1 | Der Film ist angehalten, und ` QMovie ` gibt keine ` updated()`- oder ` resized()`-Ereignisse mehr aus. Dieser Zustand wird nach dem Aufruf von `pause()` oder ` setPaused(true)` erreicht. Die aktuelle Bildnummer wird gespeichert, und der Film wird mit dem nächsten Bild fortgesetzt, wenn `unpause()` oder ` setPaused(false)` aufgerufen wird. |
QMovie::Running | 2 | Der Film läuft. |
Dokumentation zu den Eigenschaften
[bindable] cacheMode : CacheMode
Hinweis: Diese Eigenschaft unterstützt „ QProperty “-Bindungen.
Diese Eigenschaft enthält den Cache-Modus des Films
Das Zwischenspeichern von Frames kann nützlich sein, wenn der zugrunde liegende Animationsformat-Handler, auf den sich „ QMovie “ zum Dekodieren der Animationsdaten stützt, das Springen zu bestimmten Frames in der Animation oder sogar das „Zurückspulen“ der Animation zum Anfang (für die Wiederholung) nicht unterstützt. Wenn die Bilddaten zudem von einem sequenziellen Gerät stammen, ist es dem zugrunde liegenden Animationshandler nicht möglich, zu Frames zurückzuspringen, deren Daten bereits gelesen wurden (was eine Endlosschleife gänzlich unmöglich macht).
Um in solchen Situationen Abhilfe zu schaffen, kann ein ` QMovie `-Objekt angewiesen werden, die Frames zwischenzuspeichern, wobei zusätzliche Speicherkosten entstehen, da die Frames für die gesamte Lebensdauer des Objekts im Speicher verbleiben.
Standardmäßig ist diese Eigenschaft auf „ CacheNone “ gesetzt.
Zugriffsfunktionen:
| QMovie::CacheMode | cacheMode() const |
| void | setCacheMode(QMovie::CacheMode mode) |
Siehe auch „ QMovie::CacheMode “.
[bindable] speed : int
Hinweis: Diese Eigenschaft unterstützt „ QProperty “-Bindungen.
Diese Eigenschaft gibt die Wiedergabegeschwindigkeit des Films an
Die Geschwindigkeit wird in Prozent der ursprünglichen Filmgeschwindigkeit angegeben. Die Standardgeschwindigkeit beträgt 100 %. Beispiel:
QMovie movie("racecar.gif");
movie.setSpeed(200); // 2x speedZugriffsfunktionen:
| int | speed() const |
| void | setSpeed(int percentSpeed) |
Dokumentation zu den Member-Funktionen
[explicit] QMovie::QMovie(QObject *parent = nullptr)
Erstellt ein QMovie-Objekt, indem das parent -Objekt an den Konstruktor von QObject übergeben wird.
Siehe auch „ setFileName()“, „ setDevice()“ und „ setFormat()“.
[explicit] QMovie::QMovie(QIODevice *device, const QByteArray &format = QByteArray(), QObject *parent = nullptr)
Erstellt ein QMovie-Objekt. QMovie verwendet die Bilddaten aus „ device “, von denen es annimmt, dass die Datei geöffnet und lesbar ist. Ist „ format “ nicht leer, verwendet QMovie das Bildformat „ format “ zum Dekodieren der Bilddaten. Andernfalls versucht QMovie, das Format zu ermitteln.
Das parent -Objekt wird an den Konstruktor von QObject übergeben.
[explicit] QMovie::QMovie(const QString &fileName, const QByteArray &format = QByteArray(), QObject *parent = nullptr)
Erstellt ein QMovie-Objekt. QMovie verwendet die aus fileName gelesenen Bilddaten. Ist format nicht leer, verwendet QMovie das Bildformat format zum Dekodieren der Bilddaten. Andernfalls versucht QMovie, das Format zu ermitteln.
Das Objekt ` parent ` wird an den Konstruktor von ` QObject` übergeben.
[virtual noexcept] QMovie::~QMovie()
Löscht das „ QMovie “-Objekt.
QColor QMovie::backgroundColor() const
Gibt die Hintergrundfarbe des Films zurück. Wenn keine Hintergrundfarbe zugewiesen wurde, wird ein ungültiger Wert vom Typ „ QColor “ zurückgegeben.
Siehe auch setBackgroundColor().
int QMovie::currentFrameNumber() const
Gibt die Sequenznummer des aktuellen Frames zurück. Die Nummer des ersten Frames im Film ist 0.
QImage QMovie::currentImage() const
Gibt den aktuellen Frame als ` QImage` zurück.
Siehe auch „ currentPixmap()“ und „ updated()“.
QPixmap QMovie::currentPixmap() const
Gibt den aktuellen Frame als „ QPixmap “ zurück.
Siehe auch „ currentImage()“ und „ updated()“.
QIODevice *QMovie::device() const
Gibt das Gerät zurück, von dem „ QMovie “ Bilddaten liest. Wenn derzeit kein Gerät zugewiesen ist, wird „ nullptr “ zurückgegeben.
Siehe auch ` setDevice()` und ` fileName()`.
[signal] void QMovie::error(QImageReader::ImageReaderError error)
Dieses Signal wird von QMovie ausgegeben, wenn während der Wiedergabe der Fehler „ error “ aufgetreten ist. QMovie stoppt den Film und wechselt in den Zustand „ QMovie::NotRunning “.
Siehe auch lastError() und lastErrorString().
QString QMovie::fileName() const
Gibt den Namen der Datei zurück, aus der QMovie Bilddaten liest. Wenn kein Dateiname zugewiesen wurde oder wenn das zugewiesene Gerät keine Datei ist, wird ein leeres QString zurückgegeben.
Siehe auch setFileName() und device().
[signal] void QMovie::finished()
Dieses Signal wird ausgegeben, wenn der Film zu Ende ist.
Siehe auch QMovie::stop().
QByteArray QMovie::format() const
Gibt das Format zurück, das „ QMovie “ beim Dekodieren von Bilddaten verwendet. Wenn kein Format zugewiesen wurde, wird ein leeres QByteArray() zurückgegeben.
Siehe auch setFormat().
[signal] void QMovie::frameChanged(int frameNumber)
Dieses Signal wird ausgelöst, wenn sich die Frame-Nummer auf „ frameNumber “ geändert hat. Sie können die Funktionen „ currentImage()“ oder „ currentPixmap()“ aufrufen, um eine Kopie des Frames abzurufen.
int QMovie::frameCount() const
Gibt die Anzahl der Frames im Film zurück.
Bestimmte Animationsformate unterstützen diese Funktion nicht; in diesem Fall wird 0 zurückgegeben.
QRect QMovie::frameRect() const
Gibt das Rechteck des letzten Frames zurück. Wenn noch kein Frame aktualisiert wurde, wird ein ungültiges ` QRect ` zurückgegeben.
Siehe auch ` currentImage()` und ` currentPixmap()`.
bool QMovie::isValid() const
Gibt „ true “ zurück, wenn der Film gültig ist (d. h. die Bilddaten sind lesbar und das Bildformat wird unterstützt); andernfalls wird „ false “ zurückgegeben.
Informationen darüber, warum der Film ungültig ist, finden Sie unter lastError().
bool QMovie::jumpToFrame(int frameNumber)
Springt zur Frame-Nummer frameNumber. Gibt bei Erfolg „ true “ zurück; andernfalls wird „ false “ zurückgegeben.
[slot] bool QMovie::jumpToNextFrame()
Springt zum nächsten Frame. Gibt bei Erfolg „ true “ zurück; andernfalls „ false “.
QImageReader::ImageReaderError QMovie::lastError() const
Gibt den zuletzt aufgetretenen Fehler beim Versuch, Bilddaten zu lesen, zurück.
Siehe auch „ lastErrorString()“.
QString QMovie::lastErrorString() const
Gibt eine für Menschen lesbare Darstellung des letzten Fehlers zurück, der beim Versuch, Bilddaten zu lesen, aufgetreten ist.
Siehe auch „ lastError()“.
int QMovie::loopCount() const
Gibt die Anzahl der Wiederholungen zurück, die der Film durchläuft, bevor er endet. Wenn der Film nur einmal abgespielt wird (keine Wiederholung), gibt `loopCount` den Wert 0 zurück. Wenn der Film endlos wiederholt wird, gibt `loopCount` den Wert -1 zurück.
Beachten Sie, dass „ QMovie “ den Film nur dann wiederholen kann, wenn die Bilddaten von einem sequenziellen Gerät (z. B. einem Socket) stammen und die Option „ cacheMode “ auf „ QMovie::CacheAll “ gesetzt ist.
int QMovie::nextFrameDelay() const
Gibt die Anzahl der Millisekunden zurück, die „ QMovie “ wartet, bevor das nächste Bild der Animation aktualisiert wird.
[signal] void QMovie::resized(const QSize &size)
Dieses Signal wird ausgelöst, wenn die Größe des aktuellen Frames auf size angepasst wurde. Dieser Effekt wird in Animationen manchmal als Alternative zum Ersetzen des Frames verwendet. Sie können currentImage() oder currentPixmap() aufrufen, um eine Kopie des aktualisierten Frames abzurufen.
QSize QMovie::scaledSize()
Gibt die skalierte Größe der Frames zurück.
Siehe auch setScaledSize() und QImageReader::scaledSize().
void QMovie::setBackgroundColor(const QColor &color)
Bei Bildformaten, die dies unterstützen, setzt diese Funktion die Hintergrundfarbe auf color.
Siehe auch backgroundColor().
void QMovie::setDevice(QIODevice *device)
Legt das aktuelle Gerät auf „ device “ fest. „ QMovie “ liest während der Wiedergabe des Films Bilddaten von diesem Gerät.
Siehe auch device() und setFormat().
void QMovie::setFileName(const QString &fileName)
Legt den Namen der Datei fest, aus der QMovie Bilddaten liest, auf fileName.
Siehe auch fileName(), setDevice() und setFormat().
void QMovie::setFormat(const QByteArray &format)
Legt das Format fest, das QMovie beim Dekodieren von Bilddaten verwenden soll: format. Standardmäßig versucht QMovie, das Format der Bilddaten zu ermitteln.
Sie können ` supportedFormats()` aufrufen, um eine vollständige Liste der von ` QMovie ` unterstützten Formate zu erhalten.
Siehe auch format() und QImageReader::supportedImageFormats().
[slot] void QMovie::setPaused(bool paused)
Wenn „ paused “ wahr ist, wechselt „ QMovie “ in den Zustand „ Paused “ und gibt „ stateChanged “ (Paused) aus; andernfalls wechselt es in den Zustand „ Running “ und gibt „ stateChanged “ (Running) aus.
Siehe auch „ state()“.
void QMovie::setScaledSize(const QSize &size)
Legt die skalierte Rahmengröße auf „ size “ fest.
Siehe auch „ scaledSize()“ und „ QImageReader::setScaledSize()“.
[slot] void QMovie::start()
Startet den Film. „ QMovie “ wechselt in den Status „ Running “ und gibt im Verlauf des Films die Signale „ updated()“ und „ resized()“ aus.
Befindet sich „ QMovie “ im Zustand „ Paused “, entspricht diese Funktion dem Aufruf von „ setPaused(false)“. Befindet sich „ QMovie “ bereits im Zustand „ Running “, führt diese Funktion keine Aktion aus.
Siehe auch „ stop()“ und „ setPaused()“.
[signal] void QMovie::started()
Dieses Signal wird ausgelöst, nachdem „ QMovie::start()“ aufgerufen wurde und „ QMovie “ in den Zustand „ QMovie::Running “ übergegangen ist.
QMovie::MovieState QMovie::state() const
Gibt den aktuellen Status von „ QMovie “ zurück.
Siehe auch „ MovieState “ und „ stateChanged()“.
[signal] void QMovie::stateChanged(QMovie::MovieState state)
Dieses Signal wird jedes Mal ausgelöst, wenn sich der Status des Films ändert. Der neue Status wird durch „ state “ festgelegt.
Siehe auch ` QMovie::state()`.
[slot] void QMovie::stop()
Hält den Film an. „ QMovie “ wechselt in den Status „ NotRunning “ und gibt die Ereignisse „ updated()“ und „ resized()“ nicht mehr aus. Wird „ start()“ erneut aufgerufen, wird der Film von Anfang an neu gestartet.
Befindet sich QMovie bereits im Zustand „ NotRunning “, führt diese Funktion keine Aktion aus.
Siehe auch „ start()“ und „ setPaused()“.
[static] QList<QByteArray> QMovie::supportedFormats()
Gibt die Liste der von QMovie unterstützten Bildformate zurück.
Siehe auch QImageReader::supportedImageFormats().
[signal] void QMovie::updated(const QRect &rect)
Dieses Signal wird ausgelöst, wenn die Rect- rect e im aktuellen Frame aktualisiert wurde. Sie können die Funktionen „ currentImage()“ oder „ currentPixmap()“ aufrufen, um eine Kopie des aktualisierten Frames abzurufen.
© 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.