我有一个for循环,它在每次迭代时设置进度条的值。 for循环执行这里描述的setProgress方法:
void setProgress(int progStep){
progressBar->setValue(progStep);
progStep++;
QTextStream(stdout) << progStep << " " << progSum << endl;
}
我可以打印出最后一行,因此执行该方法但每次都不更新进度条的GUI。
当我的最大值为25(和最小0)时,该方法将打印0-25之间的每个数字。我的目标是让进度条在执行期间显示25个不同的百分比值。
结构:
for(.....) {
.....
.....
setProgress(progStep);
}
实际发生的是,它使用百分比值更新进度条约2-3次。 for循环大约需要30秒,因此它绝对可以进行25个百分比的更新。
我该如何解决这个问题?
答案 0 :(得分:2)
您必须在致电QApplication::processEvents()
后致电setProgress(progStep)
,让GUI线程更新进度条。
答案 1 :(得分:1)
似乎你只是在没有运行事件循环的情况下调用多次setProgress()
,因此GUI不会更新。
在QApplication::processEvents()
之后调用setProgress()
以更新GUI。
如果您希望setProgress()
更新GUI,无论情况如何,您都可以在进度条更新部分之后调用QApplication::processEvents()
正文中的setProgress()
。