QObject::connect: Cannot queue arguments of type 'Mat&' (Make sure 'Mat&' is registered using qRegisterMetaType().)
时间: 2024-05-03 21:18:29 浏览: 7
这是一个 Qt 的错误信息,意思是无法将类型为 'Mat&' 的参数加入到信号槽队列中,需要使用 qRegisterMetaType() 注册该类型。
在 Qt 中,当一个信号槽连接的参数是自定义的类型时,需要使用 qRegisterMetaType() 将该类型注册到 Qt 的元对象系统中,以便 Qt 能够正确地处理该类型的对象。在这种情况下,你需要在代码中添加如下语句:
```c++
qRegisterMetaType<Mat>("Mat&");
```
这样就可以解决该错误信息了。
相关问题
QObject::connect: Cannot queue arguments of type 'Mat' (Make sure 'Mat' is registered using qRegisterMetaType().)
这是一个 Qt 中的错误消息,它表示您正在尝试连接一个槽函数,但该函数的参数类型是无法被 Qt 自动识别的。在这种情况下,您需要通过调用 `qRegisterMetaType` 函数来注册 `Mat` 类型,使得 Qt 可以正确地处理这个类型的参数。具体的做法是在您的代码中添加以下行:
```
qRegisterMetaType<cv::Mat>("cv::Mat");
```
请注意,您需要包括 OpenCV 的头文件以便能够使用 `cv::Mat` 类型。
qobject::connect: cannot queue arguments of type 'DialogInfoStu' (make sure 'DiagloInfoStu &' is registered using qRegisterMetaType
这个错误通常是因为Qt的信号和槽连接中,信号和槽的参数类型不匹配造成的。在这个错误中,它显示的是不能将类型为‘DialogInfoStu’的参数加入到队列中,因为该类型没有被注册。所以,你需要在连接信号和槽之前,使用qRegisterMetaType函数对该类型进行注册。
例如,如果你的信号和槽定义如下:
```cpp
signals:
void dialogInfo(const DialogInfoStu& info);
public slots:
void handleInfo(const DialogInfoStu& info);
```
那么在使用connect函数进行连接之前,你需要在代码中添加以下语句:
```cpp
qRegisterMetaType<DialogInfoStu>("DialogInfoStu"); // 注册类型
connect(obj, &MyClass::dialogInfo, this, &MyClass::handleInfo); // 连接信号和槽
```
这样就可以避免出现该错误。