2016-05-17 1 views
0

別のスレッドで機能を起動します。のQtこれは私のGUIクラスです

class MainWindow : public QMainWindow 
{ 
    Q_OBJECT 

public: 
    explicit MainWindow(QWidget *parent = 0); 
    ~MainWindow(); 

private slots: 
    void on_pushButton_CallEndlessLoop_clicked(); 

private: 
    Ui::MainWindow *ui; 
    void myEndlessLoopFunc(); 

protected: 
    void closeEvent(QCloseEvent *event); 
}; 

私はGUIを使用する必要があるとして、私はプッシュボタンCallEndlessLoopがクリックされたときに別のスレッドでmyEndlessLoopF​​uncを()を起動します。

void MainWindow::on_pushButton_CallEndlessLoop_clicked() 
{ 
    QFuture<void> future = QtConcurrent::run(myEndlessLoopFunc()); 
} 

コンパイラは「空隙表現の使用は無効です」私にメッセージを与える:これは私が機能をやったことある

。私は "QtConcurrent"を含んだ。私は何が間違っているのかわからない、あるいは別のやり方でやらなければならないかもしれない。

何か助けていただければ幸いです...ありがとうございます。

+0

'QtConcurrent :: run(myEndlessLoopF​​unc());' '()'を削除してみます。 –

+0

試してみましたが残念ながら働いていません。コンパイラは、 "非静的メンバー関数の無効な使用"メッセージを返します。 – mjarvas

+0

おそらく、最も近いGoogleキオスクにそのエラーテキストを送信してみてください。それとも失敗したのか、それについて聞いてください*ここに*。あるいは、この斬新なアイデアをどのようにしてabiut:[ドキュメントを読む](http://doc.qt.io/qt-4.8/qtconcurrentrun.html)。たぶんメンバーの機能について何か言っているのでしょうか? –

答えて

0

問題の原因を突き止めることはありません。あなたは、呼び出しにthis引数が不足している:

void MainWindow::on_pushButton_CallEndlessLoop_clicked() 
{ 
    QFuture<void> future = QtConcurrent::run(this, &MainWindow::myEndlessLoopFunc); 
} 

http://doc.qt.io/qt-4.8/qtconcurrentrun.html#using-member-functions すべてのメソッドは、あなたがQtConcurrent::run関数に渡す必要があり、明示的ではない引数を持っています。

+0

あなたは正しいです、私は分かりません。私はあなたのことを試みましたが、それは
から始まる「多くのエラーメッセージを作成します」(「(MainWindow :: *)、(MainWindow *)()」を呼び出すための一致する関数がありません」 – mjarvas

+0

「this」と「&MainWindow: :myEndlessLoopF​​unc "、私はコンパイルすることができました。ありがとうございます。 – mjarvas

+0

私はそれが' this'が最初に行くドキュメンテーションの例を持っていることに気付きました(私はリンクも提供しました)。 –

関連する問題