QScreenCapture Class
Esta clase se utiliza para capturar una pantalla. Más...
| Cabecera: | #include <QScreenCapture> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Multimedia)target_link_libraries(mytarget PRIVATE Qt6::Multimedia) |
| qmake: | QT += multimedia |
| Desde: | Qt 6.5 |
| En QML: | ScreenCapture |
| Hereda: | QObject |
Tipos Públicos
| enum | Error { NoError, InternalError, CapturingNotSupported, CaptureFailed, NotFound } |
Propiedades
- active : bool
- error : Error
- errorString : QString
- screen : QScreen*
Funciones públicas
| QMediaCaptureSession * | captureSession() const |
| QScreenCapture::Error | error() const |
| QString | errorString() const |
| bool | isActive() const |
| QScreen * | screen() const |
| void | setScreen(QScreen *screen) |
Ranuras públicas
Señales
| void | activeChanged(bool) |
| void | errorChanged() |
| void | errorOccurred(QScreenCapture::Error error, const QString &errorString) |
| void | screenChanged(QScreen *) |
Descripción Detallada
La clase captura una pantalla. Es manejada por la clase QMediaCaptureSession donde la pantalla capturada puede ser mostrada en un objeto de previsualización de video o grabada en un archivo.
QMediaCaptureSession session; QAudioInput audioInput; session.setAudioInput(&input); QMediaRecorder recorder; session.setRecorder(&recorder); recorder.setQuality(QMediaRecorder::HighQuality); recorder.setOutputLocation(QUrl::fromLocalFile("test.mp3")); recorder.record();
Limitaciones de la Captura de Pantalla
En Qt 6.5.2 y superiores, las siguientes limitaciones se aplican al uso de QScreenCapture:
- Sólo es compatible con el backend FFmpeg.
- En sistemas Linux usando el compositor Wayland, la implementación de captura de pantalla es experimental y viene con las siguientes limitaciones. Debido a las restricciones del protocolo Wayland, es imposible establecer y obtener la pantalla de destino a través de la API de la clase
QScreenCapture. En su lugar, el sistema operativo mostrará un asistente de selección de pantalla al invocarQScreenCapture::setActive(true). La función de captura de pantalla requiere la instalación del servicio ScreenCast soportado a través de XDG Desktop Portal y {https://pipewire.org/}{PipeWire} (0.3). Estas limitaciones podrían cambiar en el futuro. - No es compatible con sistemas operativos móviles, excepto en Android. Screen Capture en Android necesita un permiso adicional del servicio de primer plano de Android que debe añadirse al archivo
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> - En embebidos con EGLFS, su funcionalidad es limitada. Para aplicaciones Qt Quick, la clase se implementa actualmente a través de QQuickWindow::grabWindow, lo que puede causar problemas de rendimiento.
- En la mayoría de los casos, establecemos una tasa de fotogramas de captura de pantalla igual a la tasa de refresco de la pantalla, excepto en Windows, donde la tasa puede ser flexible. Una tasa de fotogramas de este tipo (75/120 FPS) podría causar problemas de rendimiento en CPUs débiles si la pantalla capturada es de resolución 4K. En EGLFS, la tasa de fotogramas de captura está actualmente bloqueada en 30 FPS.
Véase también QWindowCapture y QMediaCaptureSession.
Documentación del tipo de miembro
enum QScreenCapture::Error
Enumera los códigos de error que pueden ser señalados por la clase QScreenCapture. errorString() proporciona información detallada sobre la causa del error.
| Constante | Valor | Descripción |
|---|---|---|
QScreenCapture::NoError | 0 | No error |
QScreenCapture::InternalError | 1 | Error interno del controlador de captura de pantalla |
QScreenCapture::CapturingNotSupported | 2 | No se admite la captura |
QScreenCapture::CaptureFailed | 4 | Error de captura de pantalla |
QScreenCapture::NotFound | 5 | Pantalla seleccionada no encontrada |
Documentación de propiedades
active : bool
Esta propiedad indica si la captura está actualmente activa.
Funciones de acceso:
| bool | isActive() const |
| void | setActive(bool active) |
Señal del notificador:
| void | activeChanged(bool) |
[read-only] error : Error
Esta propiedad contiene el código del último error.
Funciones de acceso:
| QScreenCapture::Error | error() const |
Señal del notificador:
| void | errorChanged() |
[read-only] errorString : QString
Esta propiedad contiene una cadena legible que describe la causa del error.
Funciones de acceso:
| QString | errorString() const |
Señal del notificador:
| void | errorChanged() |
screen : QScreen*
Esta propiedad mantiene la pantalla para la captura.
Funciones de acceso:
| QScreen * | screen() const |
| void | setScreen(QScreen *screen) |
Señal del notificador:
| void | screenChanged(QScreen *) |
Documentación de funciones miembro
QMediaCaptureSession *QScreenCapture::captureSession() const
Devuelve la sesión de captura a la que está conectada esta QScreenCapture.
Utilice QMediaCaptureSession::setScreenCapture() para conectar la cámara a una sesión.
[signal] void QScreenCapture::errorOccurred(QScreenCapture::Error error, const QString &errorString)
Señala cuándo se produce un error, junto con el errorString.
[slot] void QScreenCapture::start()
Inicia la captura de pantalla.
[slot] void QScreenCapture::stop()
Detiene la captura de pantalla.
© 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.