QObject::connect: Cannot queue arguments of type 'cv::Mat' (Make sure 'cv::Mat' is registered using qRegisterMetaType().)
时间: 2024-04-15 14:27:08 浏览: 15
这个错误提示表明您在使用 `QObject::connect` 函数时,尝试将 `cv::Mat` 类型的参数传递给槽函数。但是,默认情况下,Qt 并不支持将非 Qt 类型的参数传递给信号和槽机制。
要解决这个问题,您需要使用 `qRegisterMetaType` 函数来注册 `cv::Mat` 类型,以便在信号和槽之间进行传递。
在您的代码中,可以在使用 `QObject::connect` 函数之前的某个位置调用 `qRegisterMetaType<cv::Mat>()` 来注册 `cv::Mat` 类型。例如:
```cpp
qRegisterMetaType<cv::Mat>();
QObject::connect(sender, SIGNAL(yourSignal(cv::Mat)), receiver, SLOT(yourSlot(cv::Mat)));
```
请确保在发送信号和连接槽函数之前调用 `qRegisterMetaType<cv::Mat>()`,以便 Qt 能够正确地处理 `cv::Mat` 类型的参数。
如果您的信号和槽函数不是直接使用 `QObject::connect` 进行连接,而是使用 Qt 的新语法(例如使用 `connect` 宏),也可以在合适的位置调用 `qRegisterMetaType<cv::Mat>()` 来注册 `cv::Mat` 类型。
请注意,如果您的 `cv::Mat` 对象非常大或者复杂,可能需要使用指针或引用类型进行传递,以避免复制大量数据。
如果问题仍然存在,请提供更多相关的代码和错误信息以便我更好地帮助您解决问题。