Sur cette page

ScreenCapture QML Type

Ce type sert à réaliser une capture d'écran. En savoir plus...

Import Statement: import QtMultimedia
Since: Qt 6.5
In C++: QScreenCapture

Propriétés

Signaux

Méthodes

Description détaillée

ScreenCapture permet de capturer un écran. Il est géré par CaptureSession, où l'écran capturé peut être affiché dans un objet de prévisualisation vidéo ou enregistré dans un fichier.

Le code ci-dessous illustre une session de capture simple avec ScreenCapture, qui affiche la vue de l'écran principal capturé dans VideoOutput.

CaptureSession {
    id: captureSession
    screenCapture: ScreenCapture {
        id: capture
        active: true
    }
    videoOutput: VideoOutput {
        id: videoOutput
    }

    Component.onCompleted: {
        // Select the screen to capture. If no screen is set, the primary
        // screen is captured by default.
        const screens = Application.screens
        if (screens.length > 0)
            capture.screen = screens[0]
    }
}

Limitations de ScreenCapture

Sous Qt 6.5.2 et versions ultérieures, les limitations suivantes s'appliquent à l'utilisation de ScreenCapture :

  • Elle n’est prise en charge qu’avec le backend FFmpeg.
  • Sur certaines plateformes, aucune nouvelle image vidéo n’est émise tant que le contenu de l’écran capturé 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.
  • Sur les systèmes Linux utilisant le compositeur Wayland, l’implémentation de la capture d’écran est expérimentale et présente les limitations suivantes. En raison des restrictions du protocole Wayland, il est impossible de définir et d’obtenir l’écran cible via l’API de la classe ` QScreenCapture `. À la place, le système d’exploitation affichera un assistant de sélection d’écran lors de l’appel de ` QScreenCapture::setActive(true)`. La fonctionnalité de capture d’écran nécessite l’installation du service ScreenCast pris en charge via XDG Desktop Portal et PipeWire (0.3). Ces limitations sont susceptibles d’évoluer à l’avenir.
  • Elle n’est pas prise en charge sur les systèmes d’exploitation mobiles, à l’exception d’Android. La capture d’écran sur Android nécessite l’ajout d’une autorisation supplémentaire pour le service au premier plan Android dans le fichier ` AndroidManifest.xml ` :
    <manifest ...>
    <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
    <uses-permission android:name="android.permission.FOREGROUND_SERVICE_MEDIA_PROJECTION" />
    <application ...>
        <service android:name="org.qtproject.qt.android.multimedia.QtScreenCaptureService"
            android:foregroundServiceType="mediaProjection"
            android:exported="false"/>
        </service>
    </application>
    </manifest>
  • Sur les systèmes embarqués avec EGLFS, ses fonctionnalités sont limitées. Pour les applications Qt Quick, la classe est actuellement implémentée via QQuickWindow::grabWindow, ce qui peut entraîner des problèmes de performances.
  • Dans la plupart des cas, nous définissons une fréquence d’images de capture d’écran égale à la fréquence de rafraîchissement de l’écran, sauf sous Windows, où cette fréquence peut être variable. Une telle fréquence d’images (75/120 FPS) peut entraîner des problèmes de performances sur des processeurs peu puissants si l’écran capturé est en résolution 4K. Sur EGLFS, la fréquence d'images de capture est actuellement verrouillée à 30 FPS.

Voir également WindowCapture et CaptureSession.

Documentation sur les propriétés

active : bool

Indique si la capture est actuellement active.

Voir également start() et stop().

error : enumeration [read-only]

Renvoie le code de la dernière erreur.

ConstanteDescription
ScreenCapture.NoErrorAucune erreur
ScreenCapture.InternalErrorErreur interne du pilote de capture d'écran
ScreenCapture.CapturingNotSupportedLa capture n'est pas prise en charge
ScreenCapture.CaptureFailedÉchec de la capture d'écran
ScreenCapture.NotFoundÉcran sélectionné introuvable

errorString : string [read-only]

Renvoie une chaîne de caractères lisible décrivant la cause de l'erreur.

maximumFrameRate : real [since 6.12]

Limite supérieure de la fréquence d'images de la capture d'écran.

Ce paramètre permet de 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 d'écran produit 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.

Si la valeur est -1, une valeur par défaut propre à la plateforme est utilisée.

Toute modification apportée à cette propriété est appliquée dès la prochaine activation de l'ScreenCapture.

Cette propriété a été introduite dans Qt 6.12.

screen : Screen

Décrit l'écran à capturer.

Si la valeur « Screen » est définie sur null, l'écran principal sera sélectionné lorsque l'instance ScreenCapture sera activée.

Voir également Application.screens.

Documentation sur les signaux

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 levées. Pour suivre ces erreurs, utilisez le signal errorOccurred.

Remarque : le gestionnaire correspondant est onErrorChanged.

errorOccurred(int error, string errorString)

Signale qu’une error s’est produite, en indiquant l’ errorString.

Pour le paramètre d'erreur, consultez le tableau d'énumération dans error afin de connaître les valeurs pouvant être transmises.

Remarque : le gestionnaire correspondant est onErrorOccurred.

Voir également error.

Documentation de la méthode

void start()

Commence à enregistrer l'screen.

Cela revient à définir la propriété « active » sur « true ».

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