QThread::create 似乎没有将参数传递给函数

QThread::create appears to not pass argument to function

本文关键字:参数传递 函数 create QThread      更新时间:2023-10-16

我有一个函数,我想在线程中执行。看起来像这样:

QThread* thread = QThread::create([](std::string nameString, std::string pth){zipUtils::unzip_v2(nameString.c_str(), pth.c_str());},
filePath.toStdString(), extP);

为了确保我的参数实际上能够按预期到达函数,我将它们打印在其中,结果,我发现第二个参数(extP.c_str()(打印为某种垃圾(只有几个符号和字母,通常最多三个,不是很长(而不是它应该是什么。问题可能是什么?奇怪的是,第一个值很好,第二个值似乎有问题。

QtConcurrent::run(myObject, &MyObject::update, arg1);  

上面的行以异步(并行模式(执行函数update((在传递给它的类MyObjectarg1

在您的情况下,您应该有这样的东西:

QtConcurrent::run(zipUtils, &ZipUtils::unzip_v2, nameString.c_str(), pth.c_str());