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