根据网上能查到的信息,QCamera查询和设置摄像头分辨率操作需要在摄像头启动之后,即
m_camera->start();
QCameraViewfinderSettings viewfinderSetting = m_camera->viewfinderSettings();
viewfinderSetting.setResolution(QSize(640,480));//当然这里的size应该是相机支持的
但是我在调试自己程序的时候却发现有的情况下这样设置会导致相机没有图像任何输入,进一步调试camera状态发现是setResolution后相机停掉了(具体原因不明)
于是进一步查阅qt文档有了新的发现,QCamera除了start还有load操作,load一般无需手动调用,除非是需要更改摄像头默认设置
于是这便柳暗花明了,按照官方文档,查询和更改相机设置应该是在load之后,并非必须start,所以将代码修改如下
m_camera->load();
QCameraViewfinderSettings viewfinderSetting = m_camera->viewfinderSettings();
viewfinderSetting.setResolution(QSize(640,480));//当然这里的size应该是相机支持的
m_camera->start();
问题就能解决。