在Qt项目开发过程中,有时候会碰到需要使用自定义数据类型作为信号或者槽的参数进行数据传输,由于信号或者槽中的参数必须为Qt meta-object 系统中能够识别的参数,但是自定义数据类型仅仅只是程序代码编写者自己知道,编译器在编译的过程中并不知道这种参数类型,但是Qt中提供了Q_DECLARE_METATYPE和qRegisterMetaType来实现具体的功能,具体实现如下:
//自定义数据类型
struct human {int age;QString name;QString sex;
};
Q_DECLARE_METATYPE(human);
然后在需要使用这个自定义数据类型作为参数传递时,将自定义的参数头文件包含起来,然后在使用之前将自定义数据类型注册到元数据类型系统中,具体代码如下:
qRegisterMetaType<human>("human");
connect( ***, ***(human), ***, ***(human));