如何在不知道百分比的情况下在 Qt 中显示“无限浮动”进度条?

Posted

技术标签:

【中文标题】如何在不知道百分比的情况下在 Qt 中显示“无限浮动”进度条?【英文标题】:How to show an 'infinite floating' progressbar in Qt without knowing the percentage? 【发布时间】:2012-08-01 07:52:48 【问题描述】:

我尝试在某些操作期间显示进度条。但是,我不知道需要多少次才能计算百分比。似乎 Windows 有这样的进度条样式: 我尝试通过将最大值和最小值都设置为 0 来实现这种风格:

ui->progressBar->setMaximum(0);

ui->progressBar->setMinimum(0);

似乎我做到了,除了它在程序退出之前确实不会停止,尽管我调用了 reset() 函数试图停止它。

所以我的问题是如何正确实现这种进度条?

【问题讨论】:

【参考方案1】:

您需要设置最小值、最大值和当前值:

ui->progressBar->setMaximum(0);
ui->progressBar->setMinimum(0);
ui->progressBar->setValue(0);

QProgressBar'a details description 告诉:

如果最小值和最大值都设置为 0,则条形图显示忙碌指示符,而不是步数百分比。

这一定是您遇到的某种错误。不会是 Qt 中的第一个。

【讨论】:

【参考方案2】:

操作完成后,尝试设置任意最大值,并将进度值设置为相同的数字:

ui->progressBar->setMaximum(100);
ui->progressBar->setValue(100);

这样,进度条应该填满以指示完成(这是一个方便的视觉提示,因为您的操作实际上已经完成)。

【讨论】:

【参考方案3】:

我赞成 BЈовић 的解决方案,因为他指出从官方文档中引用,但不幸的是,这种机制对我不起作用(无法弄清楚是什么原因)。这是我解决它的方法(根据文档,QProgressBar::setRange -- QProgressBar 可以通过使用setRange(0, 0) 设置为未确定状态):

ui->progressBar->setRange(0, 0);

【讨论】:

以上是关于如何在不知道百分比的情况下在 Qt 中显示“无限浮动”进度条?的主要内容,如果未能解决你的问题,请参考以下文章

如何在不使用pivot和unpivot的情况下在SQL Server中水平显示数据?

如何在不知道维度的情况下在 C++ 中传递二维数组 [重复]

如何在不重复代码的情况下在所有控制器中显示警报?

如何在不点击标记的情况下在 iOS 谷歌地图中显示信息窗口?

如何在不通过 HTTP 加载图像的情况下在 HTML 中显示“重新加载”符号?

如何在不刷新闪烁的情况下在浏览器中显示不断变化的图像文件?