Sur cette page

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

Fonctions publiques

QMediaCaptureSession *captureSession() const
QScreenCapture::Error error() const
QString errorString() const
bool isActive() const
QScreen *screen() const
void setScreen(QScreen *screen)

Emplacements publics

void setActive(bool active)
void start()
void stop()

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 de QScreenCapture::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.xml d'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.

ConstanteValeurDescription de l'erreur
QScreenCapture::NoError0Pas d'erreur
QScreenCapture::InternalError1Erreur interne du pilote de capture d'écran
QScreenCapture::CapturingNotSupported2La capture n'est pas prise en charge
QScreenCapture::CaptureFailed4Échec de la capture d'écran
QScreenCapture::NotFound5L'é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.