QMovie Class

Die Klasse QMovie ist eine Komfortklasse zum Abspielen von Filmen mit QImageReader. Mehr...

Kopfzeile: #include <QMovie>
CMake: find_package(Qt6 REQUIRED COMPONENTS Gui)
target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmake: QT += gui
Vererbt: 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 dazu, einfache Animationen ohne Ton darzustellen.

Erstellen Sie zunächst ein QMovie-Objekt, indem Sie dem Konstruktor von QMovie entweder den Namen einer Datei oder einen Zeiger auf eine QIODevice mit einem animierten Bildformat übergeben. Sie können isValid() aufrufen, um zu prüfen, ob die Bilddaten gültig sind, bevor Sie den Film starten. Um den Film zu starten, rufen Sie start() auf. QMovie wechselt in den Zustand Running und gibt started() und stateChanged() aus. Um den aktuellen Status des Films zu ermitteln, 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();

Immer, wenn ein neues Bild im Film verfügbar ist, gibt QMovie updated() aus. Wenn sich die Größe des Bildes ändert, wird resized() ausgegeben. Sie können currentImage() oder currentPixmap() aufrufen, um eine Kopie des aktuellen Bildes zu erhalten. Wenn der Film fertig ist, gibt QMovie finished() aus. Wenn während der Wiedergabe ein Fehler auftritt (z. B. wenn die Bilddatei beschädigt ist), gibt QMovie die Meldung error() aus.

Sie können die Geschwindigkeit der Filmwiedergabe durch den Aufruf von setSpeed() steuern, der den Prozentsatz der ursprünglichen Geschwindigkeit als Argument annimmt. Halten Sie den Film an, indem Sie setPaused(true) aufrufen. QMovie geht dann in den Zustand Paused über und sendet stateChanged(). Wenn Sie setPaused(false) aufrufen, wechselt QMovie wieder in den Zustand Running und startet den Film erneut. Um den Film anzuhalten, rufen Sie stop() auf.

Bei bestimmten Animationsformaten können Sie die Hintergrundfarbe einstellen. Sie können setBackgroundColor() aufrufen, um die Farbe festzulegen, oder backgroundColor(), um die aktuelle Hintergrundfarbe abzurufen.

currentFrameNumber() gibt die Sequenznummer des aktuellen Bildes zurück. Das erste Bild in der Animation hat die Sequenznummer 0. frameCount() gibt die Gesamtzahl der Bilder in der Animation zurück, wenn das Bildformat dies unterstützt. Sie können loopCount() aufrufen, um die Anzahl der Schleifen zu erhalten, die der Film durchlaufen soll, bevor er endet. nextFrameDelay() gibt die Anzahl der Millisekunden zurück, die das aktuelle Bild angezeigt werden soll.

QMovie kann durch den Aufruf von setCacheMode() angewiesen werden, Bilder einer Animation zwischenzuspeichern.

Rufen Sie supportedFormats() auf, um eine Liste der Formate zu erhalten, die QMovie unterstützt.

Siehe auch QLabel und QImageReader.

Dokumentation der Mitgliedstypen

enum QMovie::CacheMode

Diese Aufzählung beschreibt die verschiedenen Cache-Modi von QMovie.

KonstanteWertBeschreibung
QMovie::CacheNone0Es werden keine Frames zwischengespeichert (Standard).
QMovie::CacheAll1Alle Frames werden gecached.

enum QMovie::MovieState

Diese Aufzählung beschreibt die verschiedenen Zustände von QMovie.

KonstanteWertBeschreibung
QMovie::NotRunning0Der Film läuft nicht. Dies ist der Anfangszustand von QMovie und der Zustand, in den er übergeht, nachdem stop() aufgerufen wurde oder der Film beendet ist.
QMovie::Paused1Der Film ist angehalten und QMovie hört auf, updated() oder resized() auszugeben. Dieser Zustand wird nach dem Aufruf von pause() oder setPaused(true) erreicht. Die aktuelle Bildnummer wird beibehalten, und der Film wird mit dem nächsten Bild fortgesetzt, wenn unpause() oder setPaused(false) aufgerufen wird.
QMovie::Running2Der Film läuft.

Dokumentation der Eigenschaft

[bindable] cacheMode : CacheMode

Hinweis: Diese Eigenschaft unterstützt QProperty Bindungen.

Diese Eigenschaft enthält den Cachemodus des Films

Das Zwischenspeichern von Einzelbildern kann nützlich sein, wenn der zugrundeliegende Animationsformat-Handler, auf den sich QMovie beim Dekodieren der Animationsdaten verlässt, das Springen zu bestimmten Einzelbildern in der Animation oder sogar das "Zurückspulen" der Animation zum Anfang (für Schleifen) nicht unterstützt. Wenn die Bilddaten von einem sequentiellen Gerät stammen, ist es dem zugrundeliegenden Animations-Handler außerdem nicht möglich, zu Bildern zurückzuspringen, deren Daten bereits gelesen wurden (was eine Schleife völlig unmöglich macht).

Um in solchen Situationen zu helfen, kann ein QMovie Objekt angewiesen werden, die Bilder zwischenzuspeichern, was zusätzliche Speicherkosten verursacht, da die Bilder für die gesamte Lebensdauer des Objekts im Speicher gehalten werden.

Standardmäßig ist diese Eigenschaft auf CacheNone eingestellt.

Siehe auch QMovie::CacheMode.

[bindable] speed : int

Hinweis: Diese Eigenschaft unterstützt QProperty Bindungen.

Diese Eigenschaft enthält die Geschwindigkeit des Films

Die Geschwindigkeit wird in Prozent der Originalgeschwindigkeit des Films gemessen. Die Standardgeschwindigkeit ist 100%. Beispiel:

QMovie movie("racecar.gif");
movie.setSpeed(200); // 2x speed

Dokumentation der Mitgliedsfunktionen

[explicit] QMovie::QMovie(QObject *parent = nullptr)

Konstruiert ein QMovie-Objekt und übergibt das Objekt parent an den Konstruktor von QObject.

Siehe auch setFileName(), setDevice(), und setFormat().

[explicit] QMovie::QMovie(QIODevice *device, const QByteArray &format = QByteArray(), QObject *parent = nullptr)

Konstruiert ein QMovie-Objekt. QMovie verwendet gelesene Bilddaten aus device, von denen es annimmt, dass sie offen und lesbar sind. Wenn format nicht leer ist, verwendet QMovie das Bildformat format zur Dekodierung der Bilddaten. Andernfalls versucht QMovie, das Format zu erraten.

Das Objekt parent wird an den Konstruktor von QObject übergeben.

[explicit] QMovie::QMovie(const QString &fileName, const QByteArray &format = QByteArray(), QObject *parent = nullptr)

Konstruiert ein QMovie-Objekt. QMovie verwendet gelesene Bilddaten aus fileName. Wenn format nicht leer ist, verwendet QMovie das Bildformat format zur Dekodierung der Bilddaten. Andernfalls versucht QMovie, das Format zu erraten.

Das Objekt parent wird an den Konstruktor von QObject übergeben.

[virtual noexcept] QMovie::~QMovie()

Zerstört das Objekt QMovie.

QColor QMovie::backgroundColor() const

Gibt die Hintergrundfarbe des Films zurück. Wenn keine Hintergrundfarbe zugewiesen wurde, wird ein ungültiger QColor zurückgegeben.

Siehe auch setBackgroundColor().

int QMovie::currentFrameNumber() const

Gibt die Sequenznummer des aktuellen Bildes zurück. Die Nummer des ersten Bildes 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 auftritt. QMovie hält den Film an und geht in den Zustand QMovie::NotRunning über.

Siehe auch lastError() und lastErrorString().

QString QMovie::fileName() const

Gibt den Namen der Datei zurück, aus der QMovie die 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 ausgesendet, wenn der Film beendet ist.

Siehe auch QMovie::stop().

QByteArray QMovie::format() const

Gibt das Format zurück, das QMovie bei der Dekodierung von Bilddaten verwendet. Wurde kein Format zugewiesen, wird ein leeres QByteArray() zurückgegeben.

Siehe auch setFormat().

[signal] void QMovie::frameChanged(int frameNumber)

Dieses Signal wird ausgegeben, wenn sich die Rahmennummer zu frameNumber geändert hat. Sie können currentImage() oder currentPixmap() aufrufen, um eine Kopie des Rahmens zu erhalten.

int QMovie::frameCount() const

Gibt die Anzahl der Bilder im Film zurück.

Bestimmte Animationsformate unterstützen diese Funktion nicht; in diesem Fall wird 0 zurückgegeben.

QRect QMovie::frameRect() const

Gibt das Rect des letzten Frames zurück. Wenn noch kein Rahmen aktualisiert wurde, wird ein ungültiger QRect zurückgegeben.

Siehe auch currentImage() und currentPixmap().

bool QMovie::isValid() const

Gibt true zurück, wenn der Film gültig ist (z. B. wenn die Bilddaten lesbar sind und das Bildformat unterstützt wird); andernfalls wird false zurückgegeben.

Informationen darüber, warum der Film nicht gültig ist, finden Sie unter lastError().

bool QMovie::jumpToFrame(int frameNumber)

Springt zur Frame-Nummer frameNumber. Gibt bei Erfolg true zurück, andernfalls false.

[slot] bool QMovie::jumpToNextFrame()

Springt zum nächsten Frame. Gibt bei Erfolg true zurück, ansonsten false.

QImageReader::ImageReaderError QMovie::lastError() const

Gibt den letzten Fehler zurück, der beim Versuch, Bilddaten zu lesen, aufgetreten ist.

Siehe auch lastErrorString().

QString QMovie::lastErrorString() const

Gibt eine von Menschen lesbare Darstellung des letzten Fehlers zurück, der beim Versuch, Bilddaten zu lesen, aufgetreten ist.

Siehe auch lastError().

int QMovie::loopCount() const

Gibt an, wie oft der Film in einer Schleife abgespielt wird, bevor er zu Ende ist. Wenn der Film nur einmal abgespielt wird (keine Schleife), gibt loopCount 0 zurück. Wenn der Film in einer Endlosschleife läuft, gibt loopCount -1 zurück.

Wenn die Bilddaten von einem sequenziellen Gerät (z. B. einem Socket) stammen, kann QMovie den Film nur dann in einer Schleife abspielen, wenn 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 in der Animation aktualisiert wird.

[signal] void QMovie::resized(const QSize &size)

Dieses Signal wird ausgegeben, wenn die Größe des aktuellen Rahmens auf size geändert wurde. Dieser Effekt wird manchmal in Animationen als Alternative zum Ersetzen des Rahmens verwendet. Sie können currentImage() oder currentPixmap() aufrufen, um eine Kopie des aktualisierten Rahmens zu erhalten.

QSize QMovie::scaledSize()

Gibt die skalierte Größe von Frames zurück.

Siehe auch setScaledSize() und QImageReader::scaledSize().

void QMovie::setBackgroundColor(const QColor &color)

Für Bildformate, die dies unterstützen, setzt diese Funktion die Hintergrundfarbe auf color.

Siehe auch backgroundColor().

void QMovie::setDevice(QIODevice *device)

Setzt das aktuelle Gerät auf device. QMovie liest Bilddaten von diesem Gerät, wenn der Film läuft.

Siehe auch device() und setFormat().

void QMovie::setFileName(const QString &fileName)

Setzt den Namen der Datei, aus der QMovie Bilddaten liest, auf fileName.

Siehe auch fileName(), setDevice(), und setFormat().

void QMovie::setFormat(const QByteArray &format)

Setzt das Format, das QMovie bei der Dekodierung von Bilddaten verwendet, auf format. Standardmäßig versucht QMovie, das Format der Bilddaten zu erraten.

Sie können supportedFormats() aufrufen, um die vollständige Liste der Formate zu erhalten, die QMovie unterstützt.

Siehe auch format() und QImageReader::supportedImageFormats().

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

Wenn paused wahr ist, geht QMovie in den Zustand Paused über und sendet stateChanged(Paused); andernfalls geht es in den Zustand Running über und sendet stateChanged(Running).

Siehe auch state().

void QMovie::setScaledSize(const QSize &size)

Setzt die skalierte Rahmengröße auf size.

Siehe auch scaledSize() und QImageReader::setScaledSize().

[slot] void QMovie::start()

Startet den Film. QMovie geht in den Zustand Running über und beginnt mit der Ausgabe von updated() und resized(), wenn der Film fortschreitet.

Wenn sich QMovie im Zustand Paused befindet, ist diese Funktion gleichbedeutend mit dem Aufruf von setPaused(false). Wenn sich QMovie bereits im Zustand Running befindet, bewirkt diese Funktion nichts.

Siehe auch stop() und setPaused().

[signal] void QMovie::started()

Dieses Signal wird ausgesendet, 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 ausgegeben, wenn sich der Zustand des Films ändert. Der neue Zustand wird durch state angegeben.

Siehe auch QMovie::state().

[slot] void QMovie::stop()

Hält den Film an. QMovie geht in den Zustand NotRunning über und beendet die Ausgabe von updated() und resized(). Wenn start() erneut aufgerufen wird, beginnt der Film wieder von vorne.

Wenn sich QMovie bereits im Zustand NotRunning befindet, bewirkt diese Funktion nichts.

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 ausgesendet, wenn das Rect rect im aktuellen Frame aktualisiert wurde. Sie können currentImage() oder currentPixmap() aufrufen, um eine Kopie des aktualisierten Rahmens zu erhalten.

© 2025 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.