Sur cette page

Exemple de capture d'écran

Capture d'un écran ou d'une fenêtre.

Screen Capture montre comment capturer un écran ou une fenêtre en utilisant QScreenCapture et QWindowCapture. L'exemple montre une liste d'écrans et de fenêtres et affiche un aperçu en direct de l'élément sélectionné à l'aide de QMediaCaptureSession et QVideoWidget. La capture peut être lancée et arrêtée à l'aide de button.

Interface utilisateur affichant la liste des écrans avec l'image de la capture d'écran

Exécution de l'exemple

Pour exécuter l'exemple à partir de Qt CreatorOuvrez le mode Welcome et sélectionnez l'exemple à partir de Examples. Pour plus d'informations, voir Qt Creator: Tutoriel : Construire et exécuter.

Structure de l'application

L'exemple se compose de trois classes personnalisées. L'interface utilisateur et toutes les fonctionnalités de capture d'écran sont implémentées dans la classe ScreenCapturePreview. Les classes ScreenListModel et WindowListModel servent uniquement de modèles derrière les deux widgets QListView. La fonction principale crée un objet ScreenCapturePreview, qui crée à son tour des instances de QScreenCapture et QWindowCapture, ainsi que QMediaCaptureSession et QVideoWidget, en plus de tous les widgets de l'interface utilisateur.

Les modèles d'écran et de fenêtre sont remplis avec les valeurs de retour de QGuiApplication::screens() et QWindowCapture::capturableWindows(), respectivement.

Lorsqu'un élément de liste est sélectionné, il est connecté à l'objet QScreenCapture avec setScreen(), ou à l'objet QWindowCapture avec setWindow(). L'objet de capture est connecté à l'objet QMediaCaptureSession avec setScreenCapture() et setWindowCapture(), respectivement. La session de capture est à son tour connectée à l'objet QVideoWidget avec setVideoOutput(). Ainsi, la sortie de la capture est prévisualisée dans le widget vidéo sur le côté droit de l'interface utilisateur.

Le bouton de démarrage/arrêt appelle QScreenCapture::start() et QScreenCapture::stop(), ou QWindowCapture::start() et QWindowCapture::stop().

Une fenêtre QMessageBox s'ouvre si le signal errorOccurred est émis.

Exemple de projet @ code.qt.io

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