gpt4 book ai didi

c++ - QFuture 不会工作

转载 作者:太空狗 更新时间:2023-10-29 20:40:23 25 4
gpt4 key购买 nike

我试图让我的应用程序在多个线程上运行,以提高其进程的效率。我在 Qt 的网站上找到了 QFuture可以帮助我的模板类。我试图在他们的一个例子中使用 like 。以下是我的类声明/定义的一部分。

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++ - QFuture<void> 不会工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24427934/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com