【问题标题】:Progress Bar simulating execution time [duplicate]模拟执行时间的进度条[重复]
【发布时间】:2013-01-31 15:34:48
【问题描述】:

可能重复:
Coding progress bar advice

我用 C++ 编写了一个应用程序,它可以对纯文本文件进行编码和解码(压缩和解压缩)。现在我正在使用 Qt 创建 gui,并希望在用户运行压缩时添加一个显示压缩进度的进度条,这类似于 winrar 或一般设置应用程序。是否可以创建表示当前执行时间/总执行时间百分比的进度条?或者我可以近似显示下载状态的进度条。创建此类进度条的一般方法是什么?

【问题讨论】:

  • 您的问题是overly general 。你觉得呢?你有没有什么想法?你试过什么?你有什么代码要显示吗?
  • 关于SO还有很多其他问题有答案可以帮助你,搜索“[qt] progress”括号内的qt搜索标签。
  • 如果只需要几秒钟,就可以只显示一个 QProgressDialog 并将范围设置为 0 到 0。这样你会得到一些“空闲”进度条,左右弹跳。

标签: c++ qt user-interface progress-bar


【解决方案1】:

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

然后您必须定义一种机制(以最简单的形式,一个全局变量),使用该机制更新 UI 的线程可以了解已完成工作的百分比。然后您可以绘制适当的小部件等。

通常,使用(至少)两个线程,您需要的不仅仅是共享变量。更新 UI 的线程必须能够完全了解正在发生的事情、可用的新信息、正在采取的操作等。请注意,另一个线程实际上正在做任何有用的事情。 UI 线程将是一个观察程序状态并为用户绘制一些东西的线程。

执行这项工作的线程应该能够估计其进度。在您的情况下,例如 number_of_bytes_decoded / total_file_size。有时,无法预测进度,因此您只需将进度更新为“flash”或其他任何内容,表明正在取得进展,但您无法给出百分比。例如,当您在进度条中看到左右移动的内容时,就会发生这种情况。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-05
    • 1970-01-01
    • 2013-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-29
    • 1970-01-01
    相关资源
    最近更新 更多