- Qt 6.8
- Qt Multimedia
- C++ Classes
- QtMultimedia
- QScreenCapture
- Qt 6.8.0 Reference Documentation

# QScreenCapture Class

This class is used for capturing a screen. More...

Header: | #include <QScreenCapture>
CMake: | find_package(Qt6 REQUIRED COMPONENTS Multimedia) target_link_libraries(mytarget PRIVATE Qt6::Multimedia)
qmake: | QT += multimedia
Since: | Qt 6.5
Instantiated By: | ScreenCapture
Inherits: | QObject

- List of all members, including inherited members

## Public Types

enum | Error { NoError, InternalError, CapturingNotSupported, CaptureFailed, NotFound }

## Properties

- active : bool
- error : const Error
- errorString : const QString
- screen : QScreen*

## Public Functions

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

## Public Slots

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

## Signals

void | activeChanged(bool)
void | errorChanged()
void | errorOccurred(QScreenCapture::Error error, const QString &errorString)
void | screenChanged(QScreen *)

## Detailed Description

The class captures a screen. It is managed by the QMediaCaptureSession class where the captured screen can be displayed in a video preview object or recorded to a file.

     QMediaCaptureSession session;
     QAudioInput audioInput;
     session.setAudioInput(&input);
     QMediaRecorder recorder;
     session.setRecorder(&recorder);
     recorder.setQuality(QMediaRecorder::HighQuality);
     recorder.setOutputLocation(QUrl::fromLocalFile("test.mp3"));
     recorder.record();

### Screen Capture Limitations

On Qt 6.5.2 and 6.5.3, the following limitations apply to using QScreenCapture:

- It is only supported with the FFmpeg backend.
- It is supported on all desktop platforms, except Linux with Wayland compositor, due to Wayland protocol restrictions and limitations.
- It is not supported on mobile operating systems, except on Android. There, you might run into performance issues as the class is currently implemented via QScreen::grabWindow, which is not optimal for the use case.
- On Linux, it works with X11, but it has not been tested on embedded.
- In most cases, we set a screen capture frame rate that equals the screen refresh rate, except on Windows, where the rate might be flexible. Such a frame rate (75/120 FPS) might cause performance issues on weak CPUs if the captured screen is of 4K resolution.

See also QWindowCapture and QMediaCaptureSession.

## Member Type Documentation

### enum QScreenCapture::Error

Enumerates error codes that can be signaled by the QScreenCapture class. errorString() provides detailed information about the error cause.

Constant | Value | Description
--- | --- | ---
`QScreenCapture::NoError` | `0` | No error
`QScreenCapture::InternalError` | `1` | Internal screen capturing driver error
`QScreenCapture::CapturingNotSupported` | `2` | Capturing is not supported
`QScreenCapture::CaptureFailed` | `4` | Capturing screen failed
`QScreenCapture::NotFound` | `5` | Selected screen not found

## Property Documentation

### active : bool

This property holds whether the capturing is currently active.

Access functions:

bool | isActive() const
void | setActive(bool active)

Notifier signal:

void | activeChanged(bool)

### `[read-only]` error : const Error

This property holds the code of the last error.

Access functions:

QScreenCapture::Error | error() const

Notifier signal:

void | errorChanged()

### `[read-only]` errorString : const QString

This property holds a human readable string describing the cause of error.

Access functions:

QString | errorString() const

Notifier signal:

void | errorChanged()

### screen : QScreen*

This property holds the screen for capturing.

Access functions:

QScreen * | screen() const
void | setScreen(QScreen *screen)

Notifier signal:

void | screenChanged(QScreen *)

## Member Function Documentation

### QMediaCaptureSession *QScreenCapture::captureSession() const

Returns the capture session this QScreenCapture is connected to.

Use QMediaCaptureSession::setScreenCapture() to connect the camera to a session.

### `[signal]` void QScreenCapture::errorOccurred(QScreenCapture::Error error, const QString &errorString)

Signals when an error occurs, along with the errorString.

### `[slot]` void QScreenCapture::start()

Starts screen capture.

### `[slot]` void QScreenCapture::stop()

Stops screen capture.