QScreenCapture Class
Cette classe est utilisée pour capturer un écran. Plus d'informations...
| En-tête : | #include <QScreenCapture> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS Multimedia)target_link_libraries(mytarget PRIVATE Qt6::Multimedia) |
| qmake : | QT += multimedia |
| Depuis : | Qt 6.5 |
| Dans QML : | ScreenCapture |
| Hérites : | QObject |
Types publics
| enum | Error { NoError, InternalError, CapturingNotSupported, CaptureFailed, NotFound } |
Propriétés
- active : bool
- error : Error
- errorString : QString
- screen : QScreen*
Fonctions publiques
| QMediaCaptureSession * | captureSession() const |
| QScreenCapture::Error | error() const |
| QString | errorString() const |
| bool | isActive() const |
| QScreen * | screen() const |
| void | setScreen(QScreen *screen) |
Emplacements publics
Signaux
| void | activeChanged(bool) |
| void | errorChanged() |
| void | errorOccurred(QScreenCapture::Error error, const QString &errorString) |
| void | screenChanged(QScreen *) |
Description détaillée
Cette classe capture un écran. Elle est gérée par la classe QMediaCaptureSession où l'écran capturé peut être affiché dans un objet de prévisualisation vidéo ou enregistré dans un fichier.
QMediaCaptureSession session; QAudioInput audioInput; session.setAudioInput(&input); QMediaRecorder recorder; session.setRecorder(&recorder); recorder.setQuality(QMediaRecorder::HighQuality); recorder.setOutputLocation(QUrl::fromLocalFile("test.mp3")); recorder.record();
Limites de la capture d'écran
Sur Qt 6.5.2 et plus, les limitations suivantes s'appliquent à l'utilisation de QScreenCapture :
- Il n'est supporté qu'avec le backend FFmpeg.
- Sur les systèmes Linux utilisant le compositeur Wayland, l'implémentation de la capture d'écran est expérimentale et comporte 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. Au lieu de cela, le système d'exploitation affichera un assistant de sélection d'écran lors de l'invocation deQScreenCapture::setActive(true). La fonction de capture d'écran nécessite l'installation du service ScreenCast pris en charge par XDG Desktop Portal et {https://pipewire.org/}{PipeWire} (0.3). Ces limitations pourraient changer à l'avenir. - Elle n'est pas prise en charge sur les systèmes d'exploitation mobiles, sauf sur Android. Screen Capture sur Android nécessite l'ajout au fichier
AndroidManifest.xmld'une autorisation supplémentaire pour le service Android de premier plan:<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, la fonctionnalité est limitée. Pour les applications Qt Quick, la classe est actuellement implémentée via QQuickWindow::grabWindow, ce qui peut entraîner des problèmes de performance.
- Dans la plupart des cas, nous définissons une fréquence d'images pour la capture d'écran qui est égale à la fréquence de rafraîchissement de l'écran, sauf sous Windows, où la fréquence peut être flexible. Une telle fréquence d'images (75/120 FPS) peut causer des problèmes de performance sur des CPU faibles si l'écran capturé est d'une résolution de 4K. Sur l'EGLFS, la fréquence de capture est actuellement bloquée à 30 FPS.
Voir aussi QWindowCapture et QMediaCaptureSession.
Type de membre Documentation
enum QScreenCapture::Error
Enumère les codes d'erreur qui peuvent être signalés par la classe QScreenCapture. errorString() fournit des informations détaillées sur la cause de l'erreur.
| Constante | Valeur | Description de l'erreur |
|---|---|---|
QScreenCapture::NoError | 0 | Pas d'erreur |
QScreenCapture::InternalError | 1 | Erreur interne du pilote de capture d'écran |
QScreenCapture::CapturingNotSupported | 2 | La capture n'est pas prise en charge |
QScreenCapture::CaptureFailed | 4 | Échec de la capture d'écran |
QScreenCapture::NotFound | 5 | L'écran sélectionné n'a pas été trouvé |
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 du notificateur :
| void | activeChanged(bool) |
[read-only] error : Error
Cette propriété contient le code de la dernière erreur.
Fonctions d'accès :
| QScreenCapture::Error | error() const |
Signal du notificateur :
| void | errorChanged() |
[read-only] errorString : QString
Cette propriété contient une chaîne lisible par l'homme décrivant la cause de l'erreur.
Fonctions d'accès :
| QString | errorString() const |
Signal du notificateur :
| void | errorChanged() |
screen : QScreen*
Cette propriété maintient l'écran pour la capture.
Fonctions d'accès :
| QScreen * | screen() const |
| void | setScreen(QScreen *screen) |
Signal du notificateur :
| void | screenChanged(QScreen *) |
Member Function Documentation
QMediaCaptureSession *QScreenCapture::captureSession() const
Renvoie la session de capture à laquelle cette QScreenCapture est connectée.
Utilisez QMediaCaptureSession::setScreenCapture() pour connecter la caméra à une session.
[signal] void QScreenCapture::errorOccurred(QScreenCapture::Error error, const QString &errorString)
Signale l'apparition d'une error, ainsi que la errorString.
[slot] void QScreenCapture::start()
Lance la capture d'écran.
[slot] void QScreenCapture::stop()
Arrête la capture d'écran.
© 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.