我发现我的UI程序出现了一些问题,因为我没有使用线程。
我查看了文档,从中了解到QFuture似乎是我需要的。我想知道,当你有一个函数并且想要在一个线程中运行它时,是不是就可以使用它?
那么,假设我理解得正确,我按照文档中所有示例中展示的代码进行操作,但实际上它根本不起作用......
UI.cpp
#include <QFuture>
#include <QtConcurrent/QtConcurrentRun>
#include "something.h"
void UI::button_click()
{
something s;
QFuture<int> result = QtConcurrent::run(s.heavyFunction());
result.waitForFinished();
}
something.cpp
int something::heavyFunction()
{
// heavy code here
return 42;
}
好的,显然这不是真正的代码,但与我的实际代码没有什么不同,但我收到了以下错误:
error C2780: 'QFuture<T> QtConcurrent::run(T (__cdecl *)(Param1),const Arg1 &)' : expects 2 arguments - 1 provided
它大约说了7次这个错误,基本上是说需要1,2,3,4,5,6,7个参数,但只提供了1个参数?
我从很多示例中获取了这段代码,所以我错过了什么,有什么想法吗?
something s;
被声明为成员变量,虽然我认为这没有任何区别? - AngryDuck<QtConcurrent/QtConcurrentRun>
和<QFuture>
并且加入了你的完整代码,但是我还是得到了上述错误? - AngryDuckQtConcurrent::run(&s, &something::heavyFunction)
吗? - juanchopanzasomething::heavyFunction
返回的是int
而不是void
吗? - juanchopanza