QtConcurrent::run()怎么在成员函数内调用执行另一个成员函数,并传递参数
时间: 2024-03-14 07:45:21 浏览: 89
要在QtConcurrent任务内部调用另一个成员函数并传递参数,您可以使用Lambda表达式。在Lambda表达式中,您可以调用任何成员函数并传递参数,如下所示:
```cpp
class MyClass {
public:
void myFunction1(int arg1, QString arg2) {
// 执行一些代码
}
void myFunction2() {
// 启动异步任务并调用 myFunction1()
QtConcurrent::run([=]() {
myFunction1(123, "Hello");
});
}
};
MyClass obj;
obj.myFunction2(); // 启动异步任务
```
在这个示例中,我们定义了一个名为`MyClass`的类,其中包含两个成员函数`myFunction1`和`myFunction2`。在`myFunction2`内部,我们使用Lambda表达式启动一个异步任务并调用`myFunction1`,同时传递参数`123`和`"Hello"`。请注意,我们使用了`[=]`来捕获当前作用域中的所有变量,这样我们就可以在Lambda表达式中调用`myFunction1`和传递参数。
相关问题
QtConcurrent::run()怎么调用执行成员函数
要调用QtConcurrent::run()执行成员函数,您需要传递一个指向该成员函数的指针作为第一个参数,以及指向对象的指针作为第二个参数。以下是一个示例:
```cpp
class MyClass {
public:
void myFunction() {
// 执行一些代码
}
};
MyClass obj;
QtConcurrent::run(&MyClass::myFunction, &obj);
```
在此示例中,我们创建了一个名为`MyClass`的类,并在其中定义了一个名为`myFunction`的成员函数。然后,我们创建了一个`MyClass`对象`obj`,并使用`QtConcurrent::run()`将其传递给该函数的指针及其对象的指针。这将异步执行`MyClass::myFunction()`。
阅读全文