最近项目中遇到一个问题:线程中的槽函数总是无法响应。
原因:费了九牛二虎之力终于找到问题之所在,原来是所用的信号槽中的参数类型不是Qt的自带的基础类型,而是自定义类型,Qt的信号槽在主线程和子线程中只能传递Qt的基础数据类型,比如QString、int等(不是线程与线程间传递不存在这个问题),所以我这里主线程和子线程无法通过信号槽来传递自定义参数。
解决方案:注册参数的元对象类型。
qRegisterMetaType<QVector<QStandardItem*> >("QVector<QStandardItem*>");
qRegisterMetaType<QList<QString> >("QList<QPair<int, QString> >");
qRegisterMetaType<QPair<int, QString> >("QPair<int, QString>");