引用第7楼kamatyo于2011-08-30 09:11发表的 回 6楼(dbzhang800) 的帖子 :
我看了一下move是把线程无关的类变成线程相关了,并且“Bradley T. Hughes 给出说明是: QThread 应该被看做是操作系统线程的接口或控制点,而不应该包含需要在新线程中运行的代码。需要运行的代码应该放到一个QObject的子类中,然后将该子类的对象moveToThread到新线程中。”这个正是我想要的效果。
但如果这样,UI层很多参数需要穿过QThread传到OPERATION,我觉得很不爽,QThread做了个二传手。还有在更新数据时必须在OPERATION里emit信号,又是穿过QThread传到UI。数据分层做的很不理想。但其他好像没有办法解决。不知道有没有什么好建议。
注:OPERATION里emit信号是因为OPERATION中的功能需要循环依次得出一些结果,我想把这些结果一个一个地往UI显示,所以只能放到循环内了。本来OPERATION里比较纯的业务逻辑,如此就参入了表现层的东西。如果能把这个放到QThread代理层,可能会更理想些,我有些完美主义[表情]
