3

保存する必要のある大きな画像がありimage.save(fichier)ます。保存状態のプログレスバーを表示するにはどうすればよいですか?

これは些細な質問かもしれませんが、1行のコマンドなので、実際にはこれを行う方法はありません...

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 に答える