概述
现象:
今日使用信号与槽传递QVector<unsigned char>类型的数据,发现信号触发后无法跳转到对应的槽函数。代码如下:
//信号
signals:
void sig_showResult(const QVector<unsigned char> &result);
//对应的槽函数
void showResult(const QVector<unsigned char> &result)
{
//对应的显示处理
}
排查手段:
1、确定信号与槽的连接是否有问题。排查发现没问题;
2、上网查资料,关键词“信号与槽无法传递QVector类型数据”。发现原生的信号与槽连接传参,只支持基本的数据类型,比如char,int, float,double。若想传递自定义的类型,例如结构体,类等。需要使用qRegisterMetaType()先注册自定义类型。代码如下:
qRegisterMetaType<QVector<unsigned char>>("QVector<unsigned char>");
qRegisterMetaType注册元类型
主要是在定义信号槽的时候,传递的参数类型不一定是QT所识别的,QT不识别的就要先注册以下,让QT能够认识,就是用qRegisterMetaType注册
参考资料:
Qt信号与槽传递自定义数据类型——两种解决方法 - mcdull^0^ - 博客园
Qt 线程间信号槽传递自定义数据类型(qRegisterMetaType的使用) - sky20080101 - 博客园
最后
以上就是优秀小土豆为你收集整理的QT解决信号与槽之间传递QVector类型的数据的全部内容,希望文章能够帮你解决QT解决信号与槽之间传递QVector类型的数据所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复