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
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.
| Konstante | Wert | Beschreibung |
|---|---|---|
QWindowCapture::NoError | 0 | Kein Fehler |
QWindowCapture::InternalError | 1 | Interner Fehler des Fenster-Capturing-Treibers |
QWindowCapture::CapturingNotSupported | 2 | Fenstererfassung wird nicht unterstützt |
QWindowCapture::CaptureFailed | 4 | Erfassung des Fensters fehlgeschlagen |
QWindowCapture::NotFound | 5 | Ausgewä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.