Auf dieser Seite

QWindowCapture Class

Diese Klasse dient zur Erfassung eines Fensters. Mehr...

Header: #include <QWindowCapture>
CMake: find_package(Qt6 REQUIRED COMPONENTS Multimedia)
target_link_libraries(mytarget PRIVATE Qt6::Multimedia)
qmake: QT += multimedia
Seit: Qt 6.6
In QML: WindowCapture
Erbt von: QObject

Öffentliche Typen

enum Error { NoError, InternalError, CapturingNotSupported, CaptureFailed, NotFound }

Eigenschaften

Öffentliche Funktionen

QWindowCapture(QObject *parent = nullptr)
virtual ~QWindowCapture() override
QMediaCaptureSession *captureSession() const
QWindowCapture::Error error() const
QString errorString() const
bool isActive() const
std::optional<qreal> maximumFrameRate() const
void setMaximumFrameRate(std::optional<qreal> frameRate)
void setWindow(QCapturableWindow window)
QCapturableWindow window() const

Öffentliche Slots

void setActive(bool active)
void start()
void stop()

Signale

void activeChanged(bool)
void errorChanged()
void errorOccurred(QWindowCapture::Error error, const QString &errorString)
void maximumFrameRateChanged()
void windowChanged(QCapturableWindow window)

Statische öffentliche Mitglieder

QList<QCapturableWindow> capturableWindows()

Ausführliche Beschreibung

Die Klasse erfasst ein Fenster. Sie wird von der Klasse „ QMediaCaptureSession “ verwaltet, wo das erfasste Fenster in einem Video-Vorschau-Objekt angezeigt oder in eine Datei aufgezeichnet werden kann.

Der folgende Codeausschnitt zeigt, wie man eines der erfassbaren Fenster auswählt und das Ergebnis in einem „ QVideoWidget “ anzeigt:

QMediaCaptureSession session;
QWindowCapture windowCapture;
session.setWindowCapture(&windowCapture);

QVideoWidget videoWidget;
session.setVideoOutput(&videoWidget);
videoWidget.show();

// A window must be selected before capturing can start.
const QList<QCapturableWindow> windows = QWindowCapture::capturableWindows();
if (!windows.isEmpty()) {
    windowCapture.setWindow(windows.first());
    windowCapture.start();
}

Einschränkungen bei der Fenstererfassung

Für die Verwendung von `QWindowCapture` gelten folgende Einschränkungen:

  • QWindowCapture wird nur mit dem FFmpeg-Backend unterstützt.
  • Auf einigen Plattformen werden keine neuen Videobilder ausgegeben, solange der Inhalt des erfassten Fensters unverändert bleibt. Anwendungen sollten sich daher nicht darauf verlassen, einen kontinuierlichen Bildstrom mit der angeforderten Bildrate zu erhalten.

Bei der Verwendung von „ QWindowCapture “ auf X11-Systemen gelten die folgenden Einschränkungen:

  • Auf Linux-X11-Systemen wird, wenn ein Fenster teilweise außerhalb des sichtbaren Bildschirmbereichs verschoben wird, nur der sichtbare Bereich erfasst. Infolgedessen können die ausgegebenen Videobilder eine geringere Größe als die Geometrie des Fensters haben.
  • Fenster, die sich außerhalb des sichtbaren Bildschirmbereichs befinden, können nicht erfasst werden; in diesem Fall wird ein Fehlersignal ausgegeben.
  • Das Verhalten minimierter Fenster oder solcher, die sich auf einem unsichtbaren virtuellen Arbeitsbereich befinden, hängt vom Fenstermanager ab. Beispielsweise können solche Fenster unter GNOME erfasst werden, während dies unter WindowMaker oder Xfwm nicht zulässig ist und die Fenstererfassungsinstanz einen Fehler ausgibt.

Siehe auch QMediaCaptureSession und QCapturableWindow.

Dokumentation zu Mitgliedstypen

enum QWindowCapture::Error

Listet die Fehlercodes auf, die von der Klasse „ QWindowCapture “ gemeldet werden können. Die Methode „ errorString()“ liefert detaillierte Informationen zur Fehlerursache.

KonstanteWertBeschreibung
QWindowCapture::NoError0Kein Fehler
QWindowCapture::InternalError1Interner Fehler des Fenster-Capturing-Treibers
QWindowCapture::CapturingNotSupported2Fenstererfassung wird nicht unterstützt
QWindowCapture::CaptureFailed4Erfassung des Fensters fehlgeschlagen
QWindowCapture::NotFound5Ausgewähltes Fenster nicht gefunden

Dokumentation zu den Eigenschaften

active : bool

Diese Eigenschaft gibt an, ob die Erfassung derzeit aktiv ist.

Zugriffsfunktionen:

bool isActive() const
void setActive(bool active)

Benachrichtigungssignal:

void activeChanged(bool)

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

[read-only] error : Error

Diese Eigenschaft enthält den Code des letzten Fehlers.

Zugriffsfunktionen:

QWindowCapture::Error error() const

Benachrichtigungssignal:

void errorChanged()

[read-only] errorString : QString

Diese Eigenschaft enthält eine für Menschen lesbare Zeichenfolge, die die Fehlerursache beschreibt.

Zugriffsfunktionen:

QString errorString() const

Benachrichtigungssignal:

void errorChanged()

[since 6.12] maximumFrameRate : std::optional<qreal>

Diese Eigenschaft legt die Obergrenze für die Bildrate bei der Fenstererfassung fest.

Dieser Wert kann festgelegt werden, um die standardmäßig verwendete Bildrate für die Fenseraufzeichnung zu überschreiben, die sich beispielsweise nach der Bildwiederholfrequenz des Bildschirms richtet. Da die Fenseraufzeichnung jedoch Bilder mit variabler Bildrate erzeugt, gilt dieser Wert nur als Obergrenze. Es wird nicht empfohlen, diesen Wert höher als die Bildwiederholfrequenz des Bildschirms einzustellen, da dies zu Fehlern führen kann.

Änderungen an dieser Eigenschaft werden erst wirksam, wenn der „ QWindowCapture “ das nächste Mal aktiv wird.

Diese Aufzählung wurde in Qt 6.12 eingeführt.

Zugriffsfunktionen:

std::optional<qreal> maximumFrameRate() const
void setMaximumFrameRate(std::optional<qreal> frameRate)

Notifier-Signal:

void maximumFrameRateChanged()

window : QCapturableWindow

Diese Eigenschaft enthält das Fenster für die Erfassung.

Wird diese Eigenschaft auf ein ungültiges Fenster eines aktiven „ QWindowCapture “ gesetzt, wird dieses inaktiv und es wird ein Fehler ausgegeben.

Zugriffsfunktionen:

QCapturableWindow window() const
void setWindow(QCapturableWindow window)

Notifier-Signal:

void windowChanged(QCapturableWindow window)

Siehe auch „ QWindowCapture::capturableWindows “.

Dokumentation der Mitgliedsfunktionen

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

Erstellt ein neues QWindowCapture-Objekt mit der Eigenschaft „ parent “.

[override virtual noexcept] QWindowCapture::~QWindowCapture()

Löscht das Objekt.

[static invokable] QList<QCapturableWindow> QWindowCapture::capturableWindows()

Gibt eine Liste von „ QCapturableWindow “-Objekten zurück, die derzeit für die Aufzeichnung verfügbar sind.

Hinweis: Unter macOS löst der Aufruf dieser Methode den Berechtigungsdialog „Bildschirmaufzeichnung“ aus. Wenn die Berechtigungen noch nicht erteilt wurden, gibt diese Methode eine leere Liste zurück. Ein mehrfacher Aufruf bringt diesen Dialog in den Vordergrund.

Hinweis: Diese Funktion kann über das Metaobjektsystem und aus QML heraus aufgerufen werden. Siehe Q_INVOKABLE.

QMediaCaptureSession *QWindowCapture::captureSession() const

Gibt die Aufzeichnungssitzung zurück, mit der diese „ QWindowCapture “ verbunden ist.

Verwenden Sie ` QMediaCaptureSession::setWindowCapture()` , um die Fenstererfassung mit einer Sitzung zu verbinden.

[signal] void QWindowCapture::errorChanged()

Dieses Signal wird ausgelöst, wenn die Eigenschaften „ error “ oder „ errorString “ geändert werden.

Dieses Signal wird nicht ausgelöst, wenn mehrere identische Fehler auftreten. Um solche Fehler zu verfolgen, verwenden Sie das Signal „ errorOccurred “.

Hinweis: Notifier -Signal für die Eigenschaften „ error “ und „ errorString “.

[signal] void QWindowCapture::errorOccurred(QWindowCapture::Error error, const QString &errorString)

Gibt bei Auftreten eines „ error “ eine Meldung aus, zusammen mit dem „ errorString “.

[slot] void QWindowCapture::start()

Beginnt mit der Erfassung der „ window “.

Dies entspricht der Einstellung der Eigenschaft „ active “ auf „true“.

[slot] void QWindowCapture::stop()

Beendet die Aufzeichnung.

Dies entspricht der Einstellung der Eigenschaft „ active “ auf „false“.

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