2012-06-28 24 views
0

我有一個for循環,它在每次迭代中設置進度條的值。 for循環執行此處所描述的setProgress法:QTProgressBar在運行setValue時未更新

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個百分比的更新。

我該如何解決這個問題?

回答

2

您必須在致電setProgress(progStep)之後致電QApplication::processEvents(),讓GUI線程更新進度欄。

+0

thx,這個固定它! –

1

看來你只是簡單地調用幾次setProgress()而不運行事件循環,因此GUI不會更新。

setProgress()之後調用QApplication::processEvents()以更新GUI。

如果您想讓setProgress()更新GUI,無論情況如何,您可以在進度條更新部分之後調用QApplication::processEvents()的主體setProgress()

+0

thx,這個固定它! –