QT解决信号与槽之间传递QVector类型的数据
https://www.codeleading.com/article/3568589411/
·
现象:
今日使用信号与槽传递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 - 博客园

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐
所有评论(0)