0

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

我该如何解决这个问题?

4

2 回答 2

2

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

于 2012-06-28T14:03:16.227 回答
1

似乎您只是在setProgress()不运行事件循环的情况下调用了几次,因此 GUI 没有更新。

QApplication::processEvents()之后调用setProgress()以更新 GUI。

如果您想setProgress()在任何情况下更新 GUI,您可以在进度条更新部分之后的 ,QApplication::processEvents()正文中调用。setProgress()

于 2012-06-28T14:04:05.870 回答