qt报错 F:\qt_projects\QtScrcpy\videoform.cpp:143: error: no matching function for call to 'VideoForm::connect(QList<Decoder*>&, void (Decoder::*)(devicessocket*), VideoForm*, VideoForm::VideoForm(const QString&, QWidget*)::<lambda(devicessocket*)>)' }); ^
时间: 2023-06-20 07:09:43 浏览: 214
这个错误是因为 `connect` 函数中的第三个参数不匹配。根据你提供的代码,第三个参数应该是 `this`,即当前 `VideoForm` 对象的指针。但是,在 lambda 表达式中,你又重新创建了一个 `VideoForm` 对象,并且将其传递给了 `decoder->recv_frame` 方法。这样会导致 `connect` 函数中的第三个参数与 lambda 表达式中的 `VideoForm` 对象类型不匹配。
要解决这个问题,你可以将 lambda 表达式中的 `VideoForm` 对象指针改为 `this`,如下所示:
```cpp
connect(decoders, &QList<Decoder*>::finished, this, [this](devicessocket *socket) {
if (socket == current_socket) {
ui->video->update();
}
});
for (auto decoder : *decoders) {
connect(decoder, &Decoder::recv_frame, this, [this](devicessocket *socket) {
if (socket == current_socket) {
ui->video->update();
}
});
}
```
这样,`connect` 函数中的第三个参数就与 lambda 表达式中的 `this` 相匹配了。
阅读全文