在qt日常使用中,信号与槽机制是绝对不可或缺且常用的,其中的参数一般都会比较简单,bool、int、QString之类的,但当我们想要传递相对比较复杂的参数,例如QVector<int>、QList<QString>
,以及一些我们自定义的结构体时,就会出现报错:
> QOBject::connect:Cannot queue arguments of type 'QVector<int>'
> (Makesure 'QVector<int>' is registed using qRegisterMetaType().)
原因大概就是信号槽的参数不支持你自定义的类型,只能识别QT库中最基本的类型参数,所以需要对自定义类型进行注册
qRegisterMetaType<QVector<int>>("QVector<int>");
注意,不是在定义类型,或者定义结构体的地方进行注册,而是在所需要用到的类的构造函数中进行注册,比如我的一个自定义类,需要用到自定义的结构体做信号参数,就在他的构造函数中注册一下文章来源:https://www.toymoban.com/news/detail-512832.html
CameraStartStop::CameraStartStop(QWidget *parent):QObject(parent)
{
qRegisterMetaType<QVector<int>>("QVector<int>");//不注册会警告
setParent(nullptr);
//......
}
注册完就不会报错,能够正常使用了文章来源地址https://www.toymoban.com/news/detail-512832.html
到了这里,关于QT解决报错registered using qRegisterMetaType()的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!