解决/home/student/qt/untitled/func.cpp:39: error: no matching function for call to ‘QCamera::setViewfinder(QWidget*&)’ Camera->setViewfinder(ui->Video); ^
时间: 2024-01-27 08:04:14 浏览: 186
这个错误的原因是 `QCamera::setViewfinder` 函数需要传入一个 `QCameraViewfinder` 类型的对象作为参数,而你传入了一个 `QWidget` 类型的对象。所以编译器找不到匹配的函数,报错了。
解决这个问题的方法是创建一个 `QCameraViewfinder` 对象,并将其设置为 `QWidget` 的子控件,然后再将其传入 `QCamera::setViewfinder` 函数中。代码示例如下:
```cpp
// 创建一个 QCameraViewfinder 对象
QCameraViewfinder *viewfinder = new QCameraViewfinder(this);
// 将 QCameraViewfinder 对象设置为 QWidget 的子控件
ui->Video->setGeometry(0, 0, 640, 480); // 设置控件大小
ui->Video->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
ui->Video->setAttribute(Qt::WA_StyledBackground, true);
ui->Video->setAutoFillBackground(true);
ui->Video->setLayout(new QVBoxLayout);
ui->Video->layout()->addWidget(viewfinder);
// 将 QCameraViewfinder 对象传入 QCamera::setViewfinder 函数中
QCamera *camera = new QCamera;
camera->setViewfinder(viewfinder);
```
这样就可以解决这个错误了。
阅读全文