c – QFuture不起作用
作者:互联网
我试图让我的应用程序在多个线程上运行,以使其进程更有效.我在Qt的网站上找到了可以帮助我的QFuture
temmplate课程.我试图在他们的一个例子中使用.以下是我的类声明/定义的一部分.
class PreferencesWindow {
public:
PreferencesWindow(QWidget *parent = 0);
public slots:
void dbsChanged();
}
PreferencesWindow::PreferencesWindow(QWidget *parent = 0) {
QFuture<void> fns = run(dbsChanged);
}
当我尝试运行它时,我得到48个错误(来自这一行),如:
error C2780: 'QFuture<FunctionObject::result_type> QtConcurrent::run(FunctionObject *,const Arg1 &)' : expects 2 arguments - 1 provided
我错在哪里以及如何在不同的线程上运行该插槽?
我为什么要这个?
执行此方法最多可能需要30秒(它会检查一些数据库设置).在此期间,GUI被冻结,这将导致糟糕的用户体验,因此我发现这是一个很好的解决方案.
解决方法:
您应该提供指向对象的指针以及类成员函数的地址,如:
QFuture<void> fns = QtConcurrent::run(this,&PreferencesWindow::dbsChanged);
如果您的函数有参数,您可以通过以下方式传递:
QFuture<void> fns = QtConcurrent::run(this,&PreferencesWindow::dbsChanged, val1, val2);
标签:c,multithreading,qt,qfuture 来源: https://codeday.me/bug/20190830/1769994.html