3

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

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

4

2 回答 2

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

然后将缓冲区写入磁盘

于 2012-06-25T14:47:53.063 回答
1

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

于 2012-06-25T14:54:43.710 回答