问题
在ROS2中使用qt信号在不同线程传递数据,信号传递的数据类型为ROS2里自定义的msg消息类型,信号中显示有数据,槽函数接收不到数据
解决方案:
由于是不同线程,并且信号类型是自定义的,但链接信号和槽函数之前没有进行注册,导致该问题出现,
使用前先进行注册
在头文件中先声明该信号类型,如
#include <QMetaType>
Q_DECLARE_METATYPE (std::vector<xx_interface::msg::***>)
//放在头文件下方
//xx_interfaces表示消息接口包的名称,***表示消息名称
qRegisterMetaType<xx_interfaces::msg::***>("xx_interfaces::msg::***");//由于上述信号类型引用了该信号类型,还需要对该信号注册引用
qRegisterMetaType<xx_interfaces::msg::***>("xx_interfaces::msg::***&");
qRegisterMetaType<std::vector<xx_interface::msg::***>>("std::vector<xx_interface::msg::***>");