一 原理
qt中不能绑定非基本类型的信号槽,例如自己的结构体等。
二 方法
此时就需要我们用qt自带的方法注册一下这个信号槽,
例子:有如下一个自定义参数的信号
void drawInfo(SDRAWINGDATA &drawInfo , DATATYPE type);
会报如下错误
我们在connect之前注册一下就ok了
qRegisterMetaType<SDRAWINGDATA>("SDRAWINGDATA&");
qRegisterMetaType<DATATYPE>("DATATYPE");
此时在运行程序就可以正常链接了
三 拓展
对于qt我们很多时候会发送结构体,结构体内部储存很多信息,但是此时就存在一个拷贝问题,所以大多数情况下我们都会直接发送引用的信号
这里自定义的注册也是可以发送引用的信号的方法如下
qRegisterMetaType<SDRAWINGDATA>("SDRAWINGDATA&");
注册的时候第二个字符串要加一个&就可以拉。