问题标签 [qfuture]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
multithreading - 可以取消并报告进度的 QFuture
该类QFuture
具有诸如 , 等方法cancel()
。progressValue()
这些显然可以通过QFutureWatcher
. 但是,文档为QtConcurrent::run()
:
请注意,QtConcurrent::run() 返回的 QFuture 不支持取消、暂停或进度报告。返回的 QFuture 只能用于查询函数的运行/结束状态和返回值。
我徒劳地寻找什么方法实际上可以创建一个QFuture
可以取消并报告单个长时间运行操作的进度。(看起来可能QtConcurrent::map()
和类似的功能可以,但我只有一个单一的、长时间运行的方法。)
(对于那些熟悉 .Net 的人,类似于BackgroundWorker
课程。)
有哪些可用选项?
c++ - QFuture行不通
我试图让我的应用程序在多个线程上运行,以提高其进程的效率。我在 Qt 的网站上找到QFuture
了可以帮助我的模板类。我试图在他们的一个例子中使用 like 。下面是我的类声明/定义的一部分。
当我尝试运行它时,我收到 48 个错误(来自这一行),例如:
我在哪里错了,应该如何在不同的线程上运行该插槽?
我为什么要这个? 此方法的执行最多可能需要 30 秒(它会检查一些数据库设置)。在此期间,GUI 被冻结,这将导致糟糕的用户体验,因此我认为这是一个很好的解决方案。
qt - Problems developing QFutureWatcher to improve image loading times
I am trying to load multiple images using multithreading through QFutureWatcher class but I am not being able to do it properly. My code read the url of the images and save them on a QVector. Then I Pass these QStrings to a function that load, resize and save the images on a QMap object. The code is:
The error that I am receiving when I try to compile said that the list of arguments in the call to the function "addImageThumnailToMap" is not found but I think that it is not neccesary specify that on the "QtConcurrent::map()" function. Thanks for your help
qt - 将 QFuture 列表设置为 QFutureWatcher
是否可以添加QFuture
多个QFutureWatcher
?我想添加多个功能QFutureWatcher
并在所有线程完成时收到通知。
QFutureSynchronizer
没有帮助我,因为它没有完成的信号
c++ - 分配给运行 QFuture
我可以将另一个 QFuture 对象分配给已经运行的 QFuture 对象吗?如下例所示:
我意识到这个特定的例子没有多大意义,只是为了举例。假设第一个函数的结果不再让我感兴趣,那么进行这样的分配是否安全?还是我必须先取消?如果是这样,我是否必须等待取消完成?
multithreading - 使用 QFutureWatcher 时函数未使用 QtConcurrent::run() 运行
QtConcurrent::run()
我想在(Qt for Embedded Linux 4.8)调用的并行线程中调用一个函数来从系统中删除文件和文件夹。仅使用QFuture<bool>
withQFuture::waitForFinished()
来获取结果(我需要在操作后立即运行一些代码),我能够使系统工作。
但是我想在QProgressBar
派生类中显示操作的正在进行的结果,setValue(int)
并从删除函数内部通过信号和槽机制调用它,而我用上述方法得到的是一个冻结的主线程,而操作还没有完成,这是不可接受的。
所以我想使用QFutureWatcher<bool>
它的finished()
信号并将其连接到另一个插槽,其中包含要在删除操作完成后运行的剩余代码。
我面临的问题是,当我这样做时,删除功能根本不是由QtConcurrent::run()
!我通过打印到终端的消息检查了这一点。发生的一切都是在没有执行任何删除文件功能的情况下QFutureWatcher
调用其finished()
信号(如果我使用,也会发生这种情况QFutureWatcher::waitForFinished()
)。
这是Qt的一些错误吗?
关于代码,它与 Qt Assistant 中的完全一样:全局创建 QFuture 和 QFutureWatcher,将 finished() 信号与 slot、callQtConcurrent::run()
和setFuture()
未来连接。没什么特别的。
任何帮助表示赞赏。
编辑
按照 Kuba 的要求,这里是代码的相关部分:
这是使用 QFuture 和 QFutureWatcher 的所有代码。removeFiles
如下(不要忘记它在没有 QFutureWatcher 的情况下运行良好):
c++ - 如何使用 QtConcurrent::Run 和 QThread?
我的代码是关于图像的。它可以是打开图像,改变质量,调整大小,显示图像大小......对于调整大小和改变质量,我使用滑块,当我更改滑块值时,图像会一次又一次地从缓冲区中读取。因此,我的程序中发生了冻结。所以,要解决我想使用的问题QtConcurrent::run
and QThread
or QFuture
。实际上我不知道如何使用它们,我希望你能帮助我解决我的问题。
这是我的代码。导致冻结的功能是:
这是我的 mainwindow.h:
如何集成QtConcurrent::run()
,QThread
和QFuture
我的代码?
c++ - QFutureWatcher 如何观察多个任务/未来和完成()信号
我有一些任务,从QtConcurrent::run()
. 任务有QFutureWatcher
。我知道QFutureWatcher
只能观看一个Future,但是当我从 UI 启动相同的任务时,如何在每个任务上创建 `QFutureWatcher*?是吗 :
或者是其他东西?
* 我的麻烦是我从我的代码开始每个任务,但任务是使用外部 DLL 函数执行的。而且我没有 API 来停止任务。QFutureWatcher
在我收到完成信号后,我只能等待任务结束并关闭任务并释放所有相关数据。
此时,我使用了两个 QFutureWatchers - 一个正在观看第一个运行的任务,另一个 - 如果第一个任务没有结束则启动,并使用临时观察者和临时槽观察第二个任务(代码相同,我创建它只是为了接收另一个观察者带有相关数据的信号),直到第一个任务结束。它观看了相同的代码,但我必须复制它以等待第一个任务结束,因为QFutureWatcher
没有完成信号的队列和相关的 watcher.result()`s ..
1) Qt 有任何队列任务机制吗?或者我怎样才能捕捉到多个任务的未来?
2)QtConcurrent::run
没有 cancel() 插槽。我可以对一个序列项使用映射/映射函数吗?映射 API 是否已排队处理任务/已完成信号?我怎么能意识到这一点?谢谢!
c++ - 是否可以在没有 QtConcurrent 的情况下使用 QFuture?
我有一个带有 的程序QThread
,其中包含一个网络客户端。客户端应该获取一个对象,对其进行处理,将其上传到服务器,获取响应,然后向主线程报告。我用它做了这个std::promise
,并使用了它的future
. 我制作std::promise
了一个在获取其未来后发出的对象的成员。
一个最小的示例代码如下:
我发出的对象:
我用于发射的部分:
有没有 Qt 方法可以做到这一点?
我只找到了一个QFuture
可以与 QtConcurrent 一起使用的类。我找不到解释如何将其与QThread
. 我有哪些选择可以正确使用 Qt?