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

GUI スレッドが進行状況バーを更新できるようにするには、を呼び出しQApplication::processEvents()た後に を呼び出す必要があります。setProgress(progStep)

于 2012-06-28T14:03:16.227 に答える
1

setProgress()イベントループを実行せずに何度か呼び出しているように見えるため、GUI は更新されません。

GUI を更新するには、QApplication::processEvents()afterを呼び出します。setProgress()

setProgress()どのような状況でも GUI を更新したい場合は、進行状況バーの更新部分の後にQApplication::processEvents()の本体で呼び出すことができます。setProgress()

于 2012-06-28T14:04:05.870 に答える