我有一个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%的更新。

我该如何解决?

最佳答案

您必须在调用QApplication::processEvents()之后调用setProgress(progStep),以使GUI线程更新进度条。

关于c++ - 运行setValue时QTProgressBar不更新,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11246066/

10-11 12:29