You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Qt6中使用QVideoWidget替代QCameraViewfinder显示摄像头画面问题咨询

Qt6 QCamera关联QVideoWidget实现预览的解决方案

Qt6的QtMultimedia框架并未遗漏相关接口,而是对整体架构做了重构,摄像头输出链路不再支持QCamera直接绑定QVideoWidget,需要通过QMediaCaptureSession中间层完成关联。

Qt6将各类音视频捕获场景的逻辑做了统一抽象,所有需要从硬件(摄像头、麦克风)或者屏幕获取媒体流的场景,都需要通过QMediaCaptureSession作为调度中枢,关联输入源和输出端,避免了旧版本中不同媒体源各自实现绑定逻辑的冗余问题,旧版本中的QCameraViewfinder组件也因此被移除,无需再单独使用。

实现代码示例

// 实例化必要对象
QCamera *camera = new QCamera(this);
QMediaCaptureSession *captureSession = new QMediaCaptureSession(this);
QVideoWidget *videoWidget = new QVideoWidget(this);

// 绑定链路:摄像头 -> 捕获会话 -> 显示组件
captureSession->setCamera(camera);
captureSession->setVideoOutput(videoWidget);

// 启动摄像头即可看到实时预览
camera->start();

注意事项

  • 同一时间一个QMediaCaptureSession仅能绑定一个摄像头和一个视频输出,与旧版本的限制逻辑一致
  • 如果需要同时拿到视频流做图像处理+界面预览,可以给QMediaCaptureSession同时绑定QVideoSink和QVideoWidget,无需单独拆分流

内容的提问来源于stack exchange,提问作者rubenvb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 17:36:01