QScreenCapture 类

此类用于捕获屏幕。 更多...

头: #include <QScreenCapture>
CMake: find_package(Qt6 REQUIRED COMPONENTS Multimedia)
target_link_libraries(mytarget PRIVATE Qt6::Multimedia)
qmake: QT += multimedia
Since: Qt 6.5
实例化: ScreenCapture
继承: QObject

公共类型

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

特性

公共函数

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

公共槽

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

信号

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

详细描述

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();
					

屏幕捕获局限性

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

  • It is only supported with the FFmpeg backend.
  • It is unsupported on 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 embedded with EGLFS, it has limited functionality. For Qt Quick applications, the class is currently implemented via QQuickWindow::grabWindow , which can cause performance issues.
  • 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. On EGLFS, the capture frame rate is currently locked to 30 FPS.

另请参阅 QWindowCapture and QMediaCaptureSession .

成员类型文档编制

enum QScreenCapture:: Error

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

常量 描述
QScreenCapture::NoError 0 没有错误
QScreenCapture::InternalError 1 内部屏幕捕获驱动程序错误
QScreenCapture::CapturingNotSupported 2 不支持捕获
QScreenCapture::CaptureFailed 4 捕获屏幕失败
QScreenCapture::NotFound 5 找不到选中屏幕

特性文档编制

active : bool

此特性保持捕获目前是否活动。

访问函数:

bool isActive () const
void setActive (bool active )

通知程序信号:

void activeChanged (bool)

[read-only] error : const Error

This property holds the code of the last error.

访问函数:

QScreenCapture::Error error () const

通知程序信号:

void errorChanged ()

[read-only] errorString : const QString

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

访问函数:

QString errorString () const

通知程序信号:

void errorChanged ()

screen : QScreen *

此特性保持用于捕获的屏幕。

访问函数:

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

通知程序信号:

void screenChanged (QScreen *)

成员函数文档编制

QMediaCaptureSession *QScreenCapture:: captureSession () const

Returns the capture session this QScreenCapture is connected to.

使用 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 ()

启动屏幕捕获。

[slot] void QScreenCapture:: stop ()

停止屏幕捕获。