问题:
信号中带有自定义类型参数时,多线程触发槽函数时异常,主要表现为ConnectionType
只有选BlockingQueuedConnection
才能触发槽函数。
解决办法:
- 触发信号不带参数,或者带一些简单的参数(int,QString)等,之后在槽函数中获取需要的数据
- 传参数时要通过
qRegisterMetaType
语句注册自定义类型(需要注意的点很多,容易出问题)。
qRegisterMetaType<SampleItem>("SampleItem"); //
qRegisterMetaType<BaseControlPanel::ControlType>("ControlType");