文件保存期间的进度

时间:2012-06-25 14:44:09

标签: c++ file qt progress-bar save

我有一张大图,我必须用image.save(fichier)保存。我怎么可能显示保存状态的进度条?

这可能是一个微不足道的问题,但我真的不知道怎么做,因为它是一个单行命令......

2 个答案:

答案 0 :(得分:1)

您可能无法使用内置图片保存。 您可以估算保存时间(知道图像大小,猜mb / s),然后设置进度条,只需使用计时器进行更新。

或者你可以有一个进度条,它可以快速运行到最后并重新启动以显示某些活动但不显示实际进度。

编辑:如果你真的必须有一个进步,你可以将图像数据“保存”在内存中,然后将内存写入磁盘,一次更新进度。

 QImage image;
 QByteArray bytes;
 QBuffer buffer(&bytes);
 buffer.open(QIODevice::WriteOnly);
 image.save(&buffer, "PNG"); // writes image into buffer in PNG format

然后将缓冲区写入磁盘

答案 1 :(得分:1)

您可以在另一个线程中运行QImage::save(),而主线程显示进度条,每秒使用expected_size / current_size更新其进度值。您可以使用QFile::size()

获取当前尺寸