2013-01-31 63 views
0

可能重复:
Coding progress bar advice进度条模拟执行时间

我写在C++中的应用程序可以进行编码和解码的纯文本文件(压缩和解压缩)。现在我正在创建使用Qt的GUI,并且想要添加一个进度条来显示用户运行压缩时的压缩进度,这与winrar或常规安装应用程序类似。是否可以创建代表当前执行时间/总执行时间百分比的进度条?或者我可以近似于显示下载状态的进度条。创建此类进度条的一般方法是什么?

+0

你的问题是[overly general](http://stackoverflow.com/faq#dontask)。你怎么看?你有什么尝试?你有任何代码要显示吗? – Tony

+0

还有很多其他问题的答案可以帮助你,搜索“[qt]进度”括号中的qt搜索标签。 – Tony

+0

如果只需要几秒钟,就可以显示一个QProgressDialog并将范围从0设置为0.这样,您将获得一些“空闲”进度栏,左右弹跳。 – Zaiborg

回答

0

一般的方法是让一个线程完成工作,而另一个线程使UI保持最新状态。

然后,您将不得不定义一种机制(以最简单的形式,一个全局变量),使用该机制更新UI的线程可以了解作业的百分比。然后,您可以绘制相应的小部件等。

通常,使用(至少)两个线程,您需要的不仅仅是那个共享变量。更新UI的线程必须能够完全理解正在进行的操作,可用的新信息,正在采取的操作等。请注意,其他线程实际上正在执行任何有用的操作。 UI线程将会是一个观察程序状态的用户。

做这项工作的线程应该能够估计它的进度。在你的情况下,例如number_of_bytes_decoded/total_file_size。有时候,预测进度是不可能的,因此你只需要将进度更新为“闪光”或其他任何方式,显示正在取得进展,但无法给出百分比。例如,当你看到左右进度条内的某些内容时,就会发生这种情况。