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
- active : bool
- error : enumeration
- errorString : string
- maximumFrameRate : real
(since 6.12) - screen : Screen
Signaux
- errorChanged()
- errorOccurred(int error, string errorString)
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.
| Constante | Description |
|---|---|
ScreenCapture.NoError | Aucune erreur |
ScreenCapture.InternalError | Erreur interne du pilote de capture d'écran |
ScreenCapture.CapturingNotSupported | La 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.