场景:需要下载一个数据集(有很多图片),界面有一个进度条显示下载进度
下载类DataSetLoadDataSetLoad::UploadDir(const QString & srcPath, const QString & desPath, std::functionpfunc) { //遍历要下载的文件夹: QDirIterator dir_iterator(srcPath, QDir::Dirs | QDir::Files | QDir::NoDotAndDotDot, QDirIterator::Subdirectories); QMap qMapList; while (dir_iterator.hasNext()) { qMapList[filePath] = remotePath;//把下载文件所需要的信息放到map里 } //计算进度:总文件的数量。已经下载了的文件数量 int i = 0; int nCount = qMapList.size(); for (auto it = qMapList.begin(); it != qMapList.end(); it++) { if(pfunc != nullptr) pfunc(((float)i++ )*100/ nCount);//计算下载的百分比 downLoadOneFile();//下载一个文件 } }
界面显示进度条
ui.ProgressBar->SetValue(0);
auto pfun = [&](int nVal) {
ui.ProgressBar->SetValue(nVal);
};
DataSetLoad::UploadDir(srcPath, desRootPath, pfun);
这样加进度条就不用改多少别人的代码了



