Qt5 QtConcurrent代码迁移至Qt6的改写方法咨询
Qt6中QtConcurrent::run兼容改写方案
Qt6对QtConcurrent::run的接口做了不兼容修改,原Qt5中直接传递类成员函数指针+对象实例的写法不再被支持,你可以通过lambda表达式包装成员函数调用的方式改写代码,解决编译错误:
// 改写后的代码 QFuture<void> future = QtConcurrent::run([this, arg]() { startServerBG(arg); });
补充说明
如果你的函数需要向QFuture返回结果,可以适配Qt6的QPromise接口写法,但针对当前无返回值的场景,用lambda包装是最简洁的解决方案。lambda会捕获当前对象指针this和参数arg,在后台线程中调用你的成员函数,效果和原Qt5代码完全一致。
内容的提问来源于stack exchange,提问作者NewNet
相关产品推荐
相关产品推荐

