我有以下有效的代码(但它不应该有效)
void myfunction(){
auto future = function_which_return_future();
auto *watcher = new QFutureWatcher<VariantTable>;
QObject::connect(watcher,&QFutureWatcher<VariantTable>::finished,this,[=](){
VariantTable table = future.result();
// do some stuff
delete watcher;
});
watcher->setFuture(future);
}
在这段代码中,future 超出了范围,但 watch 的 slot 内的代码仍然被执行。
这是因为事情发生得太快了,如果事情变慢,我的代码可能会失败吗?还是只是在调用 QFutureWatcher::setFuture 之后我不需要未来?