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