c++ 第5季度第6季度并发退款

fdx2calv  于 2022-12-20  发布在  其他
关注(0)|答案(1)|浏览(161)

在Qt5中,我使用了QtConcurrent,如

void  MainWindow::startServerBG(int arg){
}
QFuture<void> future = QtConcurrent::run(this,&MainWindow::startServerBG,arg);

但同样的代码在Qt6中给出了编译错误。
文档说明了一些功能上的变化,但我不明白,谁能告诉我如何为Qt6重写上述代码
错误

  • 主窗口。cpp:96:错误:静态Assert失败:传递的可调用对象的第一个参数不是QPromise &类型。是否要传递将QPromise &类型作为第一个参数的可调用对象?否则,无法使用传递的参数调用函数。*
g6ll5ycj

g6ll5ycj1#

QConcurrent::run的签名已更改为使用可变数量的参数:

template <typename T>
QFuture<T> run(Function &&f, Args &&...args)

因此,要修复代码,只需更改

QFuture<void> future = QtConcurrent::run(this,&MainWindow::startServerBG,arg);

QFuture<void> future = QtConcurrent::run(&MainWindow::startServerBG, this, arg);

https://doc.qt.io/qt-6/concurrent-changes-qt6.html#qtconcurrent-run

相关问题