问题标签 [qtconcurrent]

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.

0 投票
0 回答
656 浏览

c++ - QtConcurrent::mappedReduced

为了改进我的程序,我想使用 Qtconcurrent 来并行化我的音频处理。不幸的是,我有很多错误,我不知道为什么......

在我的 *.pro 中:QT += 并发

我将 minGW 与 Qt 5.3.1 一起使用,当我尝试构建时,编译器说“形成对 void 的引用”(qvector.h)。

这是我的主要代码:

和我的班级:

如果有人可以解释我的错误.thx :)

编辑:现在我没有这个修改的构建错误

但是我的程序崩溃了.....

0 投票
1 回答
419 浏览

c++ - QtConcurrent::map 不接受参数

我想用 QtConcurrent::map 运行一个函数,但我总是出错......我在 Mainwindow: 中有两个函数on_listWidget_itemClicked and _fillTreeWithList(QStringList selectedListWidget)。功能on_listWidget_itemClicked should use map with _fillTreeWithList.

我的代码:

标题:

价格:

错误:

有谁知道如何解决我的问题?

0 投票
1 回答
319 浏览

qt - 在 QtConcurrent 启动的线程中使用 QWaitCondition

我有一个由 QTconcurrent 运行启动的功能。在这个函数中,我使用 QThread(获取由 QTConcurrent 运行创建的线程)静态方法将其休眠一段时间,但我不想再使用时间来激活它,我想使用 WaitCondition 来唤醒线程在执行的另一个点,但我搜索了很多,没有找到任何这样的案例。我只在 run() 方法中看到 WaitConditions。有没有办法在 QtConcurrent 启动的线程中使用 QWaitCondition?

0 投票
2 回答
451 浏览

c++ - Packaging a threaded program with Qt GUI

I have a working, finished application which uses multiple boost threads and works fine with a command line interface.

I have packaged this program with a "wrapper" class so that I can run the functions within the program from a Qt Main Window.

For example:

This gets images from the network program with the parameter sampleName from a textbox and is called from a slot triggered by a pushbutton.

This all works fine, however, some functions, such as the one above, can take about 20 seconds to run and this hangs the GUI. I'd like it to not hang the GUI.

The obvious choice is to use a QThread, but I don't want to add extra classes to my program as this is only supposed to be a simple front end. Is there a way that I can run this function in a thread and wait for a termination signal without hanging the GUI?

EDIT: QFutures:

This produces 4 errors, the most relevant are probably:

and:

0 投票
1 回答
2469 浏览

qt - QtConcurrent::run 如何在主线程上结束?

我在我的应用程序中构建了一个基于 QFuture 的异步网络外观。大致是这样工作的:

我有一个QTimer触发主线程的调用,它执行以下操作(显然简化了):

我的假设是waitForFinished()在后台线程执行我的网络请求时会阻塞主线程。相反,我得到一个qFatal错误:

在堆栈跟踪中,我waitForFinished()在主线程上看到了我的,但是我看到的不是被阻塞(从下往上读取):

因此,与其等待QFuture获得值,不如在主线程上发出我所谓的并发任务。这会导致get()我上面概述的函数被调用,它侦听QEventLoop. 与此同时,QTimer火灾再次发生,我从上面得到了断言。

我做错了什么,还是完全有效的QtConcurrent::run可以导致控制回到主线程?

=== 更新 1

@peppe:正在执行的 lambda 只是执行一个 HTTP GET 并生成将 JSON 响应解析为一个SomeType对象。结果通过QFuture.

=== 更新 2

显然这是设计使然。从qfutureinterface.cppQt 5.4.0 第 293-295 行开始:

0 投票
1 回答
67 浏览

qt - Qt,在数据库调用后保持 GUI 响应

假设当用户单击按钮时,会执行涉及数据库访问的(缓慢)操作。问题是,如果我直接调用该操作,GUI 就会变得无响应。

我也尝试过使用信号/插槽,向 obj 发出请求,然后等待他的响应(另一个信号)。无论如何,结果是相同的,无响应的 GUI。

这个问题应该采取什么方法?

0 投票
0 回答
1593 浏览

multithreading - QFutureWatcher 仅触发一次带有零的进度信号

我尝试通过 QFutureWatcher 信号更新进度条值,如下所示:

但是信号progressRangeChangedprogressValueChanged在开始时只触发一次,并且都为零。所以范围是 (0, 0),值是 0。

计算完成后,完成的信号按预期工作。

我究竟做错了什么?

============= 更新:这是我的测试示例的代码。当我写它时,我发现问题在于使用 QMap 容器。当我使用 QVector 时一切正常,但是当我使用 QMap 时,问题就出现了。是否可以使用 QMap 获取进度值?

====== 再次更新:对不起,我在 Qt 文档中发现进度信息仅提供给随机访问迭代器。显然 QMap 不是这样的容器。我可以改用什么类型?

0 投票
0 回答
170 浏览

c++ - 没有匹配的函数调用对象映射(*it);

我试图多次调用一个函数,但使用并行化它们QtConcurrent::mapped

但我无法克服错误:

代码如下:

0 投票
1 回答
368 浏览

qt - QtConcurrent::blockingMapped 调用函数超过 1 个参数

我用来QtConcurrent::blockingMapped()在多个线程上执行单个参数列表上的函数。真的很棒!

但是我想做同样的事情来调用需要多个参数的函数,即:

这是我的数据:

而且我想使用上述两种方法来执行QtConcurrent::blockingMapped()我的功能......openAndProcess()QList

我该怎么做?

提前致谢!

0 投票
0 回答
180 浏览

qt - Qfuture 由空指针组成

我的 Qt 多线程程序在到达时崩溃:

我尝试了 try-catch 块,但没有奏效。

如何检查它是否为空?

当我在该行中进入我的代码时,调试器告诉我: