屏幕截图示例

捕获屏幕或窗口。

屏幕截图演示了如何使用 QScreenCaptureQWindowCapture 捕获屏幕或窗口。示例显示了屏幕和窗口列表,并使用 QMediaCaptureSessionQVideoWidget 显示选定项目的实时预览。可以通过 按钮 开始和停止捕获。

运行示例

要从 Qt Creator 运行此示例,请打开 欢迎 模式并选择 示例 中的示例。有关更多信息,请访问 构建和运行示例

应用程序结构

此示例由三个自定义类组成。UI 和所有屏幕捕获功能都实现在 ScreenCapturePreview 类中。ScreenListModel 和 WindowListModel 类仅作为两个 QListView 小部件背后的模型。主函数创建了一个 ScreenCapturePreview 对象,然后创建了 QScreenCaptureQWindowCapture 的实例,以及一个 QMediaCaptureSessionQVideoWidget 的实例,此外还有所有 UI 小部件。

屏幕和窗口模型分别填充了 QGuiApplication::screens() 和 QWindowCapture::capturableWindows() 的返回值。

当选择列表项时,它将与 QScreenCapture 对象通过 setScreen() 连接,或与 QWindowCapture 对象通过 setWindow() 连接。捕获对象通过 QMediaCaptureSession 对象的 setScreenCapture() 和 setWindowCapture() 分别连接。捕获会话随后通过 setVideoOutput() 连接到 QVideoWidget 对象。因此,捕获输出在 UI 右侧的视频小部件中预览。

开始/停止按钮调用 QScreenCapture::start() 和 QScreenCapture::stop(),或 QWindowCapture::start() 和 QWindowCapture::stop()。

如果发出 errorOccurred 信号,则会出现一个 QMessageBox

示例项目 @ code.qt.io

© 2024 Qt公司 Ltd. 本文档中包含的贡献内容归其 respective owners 所有。本文档受GNU自由文档许可版1.3条款的许可,该许可由自由软件基金会发布。GNU自由文档许可。Qt及其相关标志是Qt公司在芬兰和/或其他国家/地区的商标。所有其他商标归其 respective owners 所有。