QWindowCapture Class
Cette classe sert à capturer une fenêtre. En savoir plus…
| En-tête : | #include <QWindowCapture> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS Multimedia) target_link_libraries(mytarget PRIVATE Qt6::Multimedia) |
| qmake : | QT += multimedia |
| Depuis : | Qt 6.6 |
| En QML : | WindowCapture |
| Hérite de : | QObject |
Types publics
| enum | Error { NoError, InternalError, CapturingNotSupported, CaptureFailed, NotFound } |
Propriétés
|
|
Fonctions publiques
| 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 |
Emplacements publics
Signaux
| void | activeChanged(bool) |
| void | errorChanged() |
| void | errorOccurred(QWindowCapture::Error error, const QString &errorString) |
| void | maximumFrameRateChanged() |
| void | windowChanged(QCapturableWindow window) |
Membres publics statiques
| QList<QCapturableWindow> | capturableWindows() |
Description détaillée
La classe capture une fenêtre. Elle est gérée par la classe QMediaCaptureSession, qui permet d'afficher la fenêtre capturée dans un objet de prévisualisation vidéo ou de l'enregistrer dans un fichier.
L'extrait de code suivant montre comment sélectionner l'une des fenêtres pouvant être capturées et afficher le résultat dans une instance de ` QVideoWidget` :
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();
}Limitations de la capture de fenêtre
Les limitations suivantes s'appliquent à l'utilisation de QWindowCapture :
- QWindowCapture n’est pris en charge qu’avec le backend FFmpeg.
- Sur certaines plateformes, aucune nouvelle image vidéo n’est émise tant que le contenu de la fenêtre capturée reste inchangé. Les applications ne doivent donc pas compter sur la réception d’un flux continu d’images à la fréquence d’images demandée.
Les limitations suivantes s’appliquent lors de l’utilisation d’ QWindowCapture sur les systèmes X11 :
- Sur les systèmes Linux X11, lorsqu’une fenêtre est déplacée partiellement en dehors de la zone visible de l’écran, seule la région visible est capturée. Par conséquent, les images vidéo émises peuvent avoir une taille inférieure à la géométrie de la fenêtre.
- Les fenêtres situées en dehors de la zone visible de l’écran ne peuvent pas être capturées, et un signal d’erreur est émis dans ce cas.
- Le comportement des fenêtres minimisées ou situées sur un espace de travail virtuel invisible dépend du gestionnaire de fenêtres. Par exemple, ces fenêtres peuvent être capturées sous GNOME, tandis que sous WindowMaker ou Xfwm, cette capture n’est pas autorisée et l’instance de capture de fenêtre génère une erreur.
Voir également QMediaCaptureSession et QCapturableWindow.
Documentation sur les types de membres
enum QWindowCapture::Error
Énumère les codes d'erreur pouvant être signalés par la classe ` QWindowCapture `. La méthode ` errorString()` fournit des informations détaillées sur la cause de l'erreur.
| Constante | Valeur | Description |
|---|---|---|
QWindowCapture::NoError | 0 | Aucune erreur |
QWindowCapture::InternalError | 1 | Erreur interne du pilote de capture de fenêtre |
QWindowCapture::CapturingNotSupported | 2 | La capture de fenêtre n'est pas prise en charge |
QWindowCapture::CaptureFailed | 4 | Échec de la capture de la fenêtre |
QWindowCapture::NotFound | 5 | Fenêtre sélectionnée introuvable |
Documentation sur les propriétés
active : bool
Cette propriété indique si la capture est actuellement active.
Fonctions d'accès :
| bool | isActive() const |
| void | setActive(bool active) |
Signal de notification :
| void | activeChanged(bool) |
Voir également start() et stop().
[read-only] error : Error
Cette propriété contient le code de la dernière erreur.
Fonctions d'accès :
| QWindowCapture::Error | error() const |
Signal de notification :
| void | errorChanged() |
[read-only] errorString : QString
Cette propriété contient une chaîne de caractères lisible par l'utilisateur décrivant la cause de l'erreur.
Fonctions d'accès :
| QString | errorString() const |
Signal de notification :
| void | errorChanged() |
[since 6.12] maximumFrameRate : std::optional<qreal>
Cette propriété définit la limite supérieure de la fréquence d'images de capture de fenêtre.
Elle peut être définie pour remplacer la fréquence d'images de capture utilisée par défaut, en fonction, par exemple, de la fréquence de rafraîchissement de l'écran, mais uniquement en tant que limite supérieure, car la capture de fenêtre génère des images à une fréquence variable. Il n'est pas recommandé de définir cette valeur à un niveau supérieur à la fréquence de rafraîchissement de l'écran, car cela peut entraîner des erreurs.
Toute modification apportée à cette propriété est appliquée dès que l’ QWindowCapture e redevient active.
Cette énumération a été introduite dans Qt 6.12.
Fonctions d'accès :
| std::optional<qreal> | maximumFrameRate() const |
| void | setMaximumFrameRate(std::optional<qreal> frameRate) |
Signal de notification :
| void | maximumFrameRateChanged() |
window : QCapturableWindow
Cette propriété contient la fenêtre à capturer.
Si vous attribuez à cette propriété une fenêtre non valide sur une « QWindowCapture » active, celle-ci deviendra inactive et générera une erreur.
Fonctions d'accès :
| QCapturableWindow | window() const |
| void | setWindow(QCapturableWindow window) |
Signal de notification :
| void | windowChanged(QCapturableWindow window) |
Voir également QWindowCapture::capturableWindows.
Documentation des fonctions membres
[explicit] QWindowCapture::QWindowCapture(QObject *parent = nullptr)
Crée un nouvel objet `QWindowCapture` avec ` parent`.
[override virtual noexcept] QWindowCapture::~QWindowCapture()
Détruit l'objet.
[static invokable] QList<QCapturableWindow> QWindowCapture::capturableWindows()
Renvoie une liste d'objets « QCapturableWindow » actuellement disponibles pour l'enregistrement.
Remarque : sous macOS, l'appel de cette méthode déclenche la boîte de dialogue d'autorisation « Enregistrement d'écran ». Si les autorisations n'ont pas encore été accordées, cette méthode renvoie une liste vide. L'appeler plusieurs fois affiche cette boîte de dialogue au premier plan.
Remarque : cette fonction peut être appelée via le système de méta-objets et depuis QML. Voir Q_INVOKABLE.
QMediaCaptureSession *QWindowCapture::captureSession() const
Renvoie la session de capture à laquelle cette fonction ` QWindowCapture ` est associée.
Utilisez la fonction ` QMediaCaptureSession::setWindowCapture()` pour associer la capture de fenêtre à une session.
[signal] void QWindowCapture::errorChanged()
Ce signal est émis lorsque les propriétés ` error ` ou ` errorString ` sont modifiées.
Ce signal n'est pas émis lorsque plusieurs erreurs identiques sont déclenchées. Pour suivre ces erreurs, utilisez le signal errorOccurred.
Remarque : signalde notification pour les propriétés error et errorString.
[signal] void QWindowCapture::errorOccurred(QWindowCapture::Error error, const QString &errorString)
Signale la survenue d'une error, ainsi que l'errorString.
[slot] void QWindowCapture::start()
Commence à capturer l'window.
Cela revient à définir la propriété active sur true.
[slot] void QWindowCapture::stop()
Arrête l'enregistrement.
Cela revient à définir la propriété « active » sur « 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.