gpt4 book ai didi

qt - 阻塞 QFuture.result() 或 QFutureWatcher.waitForFinished();

转载 作者:行者123 更新时间:2023-12-03 15:57:54 24 4
gpt4 key购买 nike

所以我已经使用 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 ,但这意味着它将来自不同的线程,我读到这是不推荐的。

感谢您的宝贵时间。

最佳答案

您应该永远不要在 GUI 线程中使用任何 waitForFinished 函数。相反,将插槽连接到 future 观察者的 finished 信号。参见 this answer举个例子。

关于qt - 阻塞 QFuture.result() 或 QFutureWatcher.waitForFinished();,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25393144/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com