我正在尝试创建一个QProgressBar
来表示执行某项操作,但我不知道在执行之前需要完成的时间。
现在我有以下
QProgressBar DLbar;
DLbar.setMaximum(0);
DLbar.setMinimum(0);
DLbar.show();
我已将最小值和最大值都设置为0
,这会导致基于Qt documentation的忙碌指示符:
如果最小值和最大值都设置为0,则条形图显示忙碌 指标而不是一定百分比的步骤。这很有用 例如,当使用QNetworkAccessManager下载项目时 无法确定正在下载的项目的大小。
当我运行程序时,会显示进度条,但不是让忙碌指示符已满,而是保持这样,直到操作完成。
我尝试将DLbar
父级设置为主窗口,但存在同样的问题。
示例:
QProgressBar DLbar;
DLbar.setMaximum(0);
DLbar.setMinimum(0);
DLbar.show();
for( int i=0; i<1000000; i++ )
qDebug() << i;
答案 0 :(得分:2)
基本问题是您不允许[Symfony\Component\Debug\Exception\FatalErrorException]
Class 'Custom\Timeshow\TimeshowServiceProvider' not found
事件循环处理事件。演示的最小例子就是......
Qt
如果你要使用#include <cstdlib>
#include <chrono>
#include <thread>
#include <QApplication>
#include <QProgressBar>
int
main (int argc, char **argv)
{
QApplication app(argc, argv);
QProgressBar DLbar;
DLbar.setMaximum(0);
DLbar.setMinimum(0);
DLbar.show();
/*
* The following sleep will prevent any events being processed for 10s...
*/
std::this_thread::sleep_for(std::chrono::seconds(10));
/*
* ...after which we start the event loop and everything should start working.
*/
exit(app.exec());
}
,你真的需要深入了解基础event system。
编辑1:你问......
我仍然不明白为什么即使我使用它也不起作用 循环中的QCoreApplication :: processEvents()。
如果在上面的示例中替换了...
,它将起作用Qt
...与
exit(app.exec());