所以我一直在使用 QtConcurrent::run 一段时间,它很棒。但是现在我需要该函数来返回一个对象。因此我使用伪代码
QFutureWatcher<MyObject> fw;
QFuture<MyObject> t1 = QtConcurrent::run(&thOb, &MythreadObjFunc::getList, ConSettings, form, query);
fw.setFuture(t1);
// Both .results() and waitForFinished() block
fw.waitForFinished();
MyObject entries = t1.result();
然后我遍历 myObject。问题是这会阻塞,例如我的主 GUI 没有响应。这就是我开始使用 QtConcurrent::run 的全部原因
因此,让我的 GUI 执行 QtConcurrent::run 并取回对象但不阻塞的推荐方法是什么?我想到了信号来自 QtConcurrent::run 的信号和插槽,但这意味着它将来自不同的线程,我读到不推荐这样做。
谢谢你的时间。