En esta página

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

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

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

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 invocar QScreenCapture::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.

ConstanteValorDescripción
QScreenCapture::NoError0No error
QScreenCapture::InternalError1Error interno del controlador de captura de pantalla
QScreenCapture::CapturingNotSupported2No se admite la captura
QScreenCapture::CaptureFailed4Error de captura de pantalla
QScreenCapture::NotFound5Pantalla 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.