当信号和槽连接方式为Qt::QueuedConnection
时,如果传递的的参数不是Qt自带的参数的话则无法通过编译
我也是在不同线程连接信号槽,传递std::string时出现的...
[解决方法]
#include <QMetaType>
...
qRegisterMetaType<std::string>("std::string");//用你要用的类型
这样Qt能识别好了
***
首先看这个Qt::QueuedConnection
官方的介绍
The slot is invoked when control returns to the event loop of the receiver's thread. The slot is executed in the receiver's thread.
然后看这个 https://stackoverflow.com/questions/17121554/using-stdstring-fails-signals-and-slots
"If you are using queued connections, you need to register std::string as meta type. Use Q_DECLARE_METATYPE(std::string) in one of your headers. Call qRegisterMetaType<std::string>(); in the initialization of your code."
就这句话!OK