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.
Konstante | Wert | Beschreibung |
---|---|---|
QMovie::CacheNone | 0 | Es werden keine Frames zwischengespeichert (Standard). |
QMovie::CacheAll | 1 | Alle Frames werden gecached. |
enum QMovie::MovieState
Diese Aufzählung beschreibt die verschiedenen Zustände von QMovie.
Konstante | Wert | Beschreibung |
---|---|---|
QMovie::NotRunning | 0 | Der 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::Paused | 1 | Der 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::Running | 2 | Der 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.