可能的重复项:
编码进度条建议
我用C++编写了一个应用程序,它可以编码和解码纯文本文件(压缩和解压缩)。现在我正在使用Qt创建gui,并希望添加一个进度条,显示用户运行压缩时的压缩进度,这类似于winrar或常规设置应用程序。是否可以创建表示当前执行时间/总执行时间百分比的进度条?或者我可以像显示下载状态的进度条一样进行近似。 创建此类进度条的一般方法是什么?
一般方法是让一个线程完成工作,而另一个线程使 UI 保持最新。
然后,您必须定义一种机制(以最简单的形式,即全局变量),使用该机制,更新 UI 的线程可以了解完成作业的百分比。然后,您可以绘制适当的小部件等。
通常,使用(至少)两个线程,您需要的不仅仅是该共享变量。更新 UI 的线程必须能够完全了解正在发生的事情、可用的新信息、正在执行的操作等。请注意,实际上是另一个线程在做任何有用的事情。UI 线程将是观察程序状态为用户绘制内容的人。
执行作业的线程应该能够估计其进度。在您的情况下,例如通过number_of_bytes_decoded / total_file_size
.有时,无法预测进度,因此您只需将进度更新为"flash"或其他什么,表明正在取得进展,但您无法给出百分比。例如,当您看到进度条内的内容向左和向右移动时,就会发生这种情况。