我的应用程序中有一个函数,它根据配置调用各种子函数。每个子函数都是计算密集型的,所以我添加了一个回调来更新模态QProgressDialog的状态。每个子函数显示0-100%的自身完成而不是父函数。
如果对话框在子功能之间关闭且窗口没有焦点,则停靠栏图标会反弹。如果由于某个原因用户已将焦点切换掉而有剩余更多子功能,这可能会非常烦人!
有没有办法在没有焦点的情况下关闭QProgressDialog时禁用图标弹跳?
答案 0 :(得分:0)
如果我理解正确,你描述的情景(即使工作正确地#34;)会导致我的一个小小的烦恼。那就是:一个进度条到达终点,然后从0%开始。我宁愿说一个软件只是说"工作......"比给我一个故意误导进度吧!!
为什么不将进度条分为几个阶段,然后将每个子功能分配给进度条的一部分?在最简单的情况下,如果你有两个持续时间相等的阶段,你可以让第一阶段从0到50,然后第二阶段从50到100.这样你只需要放下并取下进度条一次
如果您的情况很复杂,您需要进行一些预先计算以划分进度范围(以及一些面向比率的数学运算)。但是即使是粗略的近似值,进度条以0到100的不规则速度向前推进,这比继续重新开始更好!
我们说有三个阶段。第一个需要一分钟,第二个需要两分钟,第三个需要半个小时。当然 - 看到它在三分钟后完成66.6%然后看着它慢慢地在最后33.3%的半小时内完成它会有些奇怪。但它并没有像回到零那么糟糕。此外,你应该能够更好地估计。即使某些事情随意变化(例如早期阶段读取数字N会严重影响后期阶段)......您是否无法扫描前期?可能会有5%的时间分配扫描,然后从那里开始。
答案 1 :(得分:0)
如果设置QProgressDialog::setAutoClose(false)
,则子功能之间的进度对话框将保持打开状态,并使停靠图标停止弹跳。