这是我的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,因此我想在单击pushButton CallEndlessLoop时在不同的线程中启动myEndlessLoopFunc()。
这就是我所做的功能:
void MainWindow::on_pushButton_CallEndlessLoop_clicked()
{
QFuture<void> future = QtConcurrent::run(myEndlessLoopFunc());
}
编译器给我消息&#34;无效使用void表达式&#34;。我包括&#34; QtConcurrent&#34;。我不知道我做错了什么,或者我不得不以不同的方式做。
任何帮助表示赞赏....提前致谢。
答案 0 :(得分: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
函数。