所以我發現我的UI程序發生了一些問題,因爲我沒有使用線程。QFuture幫助,線程化C++ Qt
我看了一下,從我能在文檔中看到的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;
}
OK顯然這心不是真正的代碼,但那裏有沒有什麼不同,這裏比我實際的代碼,但我得到以下錯誤
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提供?
我從一些例子中得到了這段代碼,所以我錯過了什麼想法?
確定iv嘗試了這個,但現在我得到的誤差項不計算爲一個函數採取一個參數... – AngryDuck 2013-04-22 15:55:23
我的東西s;'聲明爲一個成員變量,但我認爲這沒有什麼區別? – AngryDuck 2013-04-22 15:56:22
@AngryDuck它應該沒有區別。你只需要你想要運行成員函數的實例的地址。你傳遞的成員函數必須是'something'的成員。 – juanchopanza 2013-04-22 15:58:16