原罪代码:connect(this, SIGNAL(StartWork(QVector)), Tfer, SLOT(DoWork(QVector)), Qt::DirectConnection)
解决办法
解决的方法当然是要删除Qt::DirectConnection这个参数,但是删除Qt::DirectConnection后程序会报错,添加下面代码注册就可以了。
1
2 #include <QMetaType>
qRegisterMetaType<QVector<QString>>("QVector<QString>");
分析过程
- 最开始由于在connect函数使用SIGNAL(StartWork(QVector))信号时,会报错误。
- 然后就在connect后添加一个Qt::DirectConnection后就不报错误了,但是执行线程后就出现问题了,槽函数中设置控件属性无效,程序卡死。
- 添加注册类型代码(添加头文件,并在程序初始化的时候注册类型)。
- 以前并不知道Qt::DirectConnection参数会导致这个问题,现在出现问题后才发现。