一杯清酒邀明月
天下本无事,庸人扰之而烦耳。
posts - 3121,comments - 209,views - 578万
在qt日常使用中,信号与槽机制是绝对不可或缺且常用的,其中的参数一般都会比较简单,bool、int、QString之类的,但当我们想要传递相对比较复杂的参数,例如QVector<int>、QList<QString>,以及一些我们自定义的结构体时,就会出现报错:
1 > QOBject::connect:Cannot queue arguments of type 'QVector<int>'   
2 > (Makesure 'QVector<int>' is registed using qRegisterMetaType().)

  原因大概就是信号槽的参数不支持你自定义的类型,只能识别QT库中最基本的类型参数,所以需要对自定义类型进行注册

qRegisterMetaType<QVector<int>>("QVector<int>");

  注意,不是在定义类型,或者定义结构体的地方进行注册,而是在所需要用到的类的构造函数中进行注册,比如我的一个自定义类,需要用到自定义的结构体做信号参数,就在他的构造函数中注册一下

复制代码
1 CameraStartStop::CameraStartStop(QWidget *parent):QObject(parent)
2 {
3     qRegisterMetaType<QVector<int>>("QVector<int>");//不注册会警告
4     setParent(nullptr);
5     //......
6 }
复制代码

 

posted on   一杯清酒邀明月  阅读(461)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期
· 全程使用 AI 从 0 到 1 写了个小工具
· 从文本到图像:SSE 如何助力 AI 内容实时呈现?(Typescript篇)
历史上的今天:
2020-06-12 OpenCV 对于Mat的理解和操作
2020-06-12 OpenCV uchar和Mat之间的相互转换
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示