我在创建QProgressButton的地方有一个Qt-GUI类'Widget'。
“小部件”具有类“引擎”的实例。 “引擎”中的函数Start()在大循环中进行许多计算。如何从引擎更新此进度栏?我应该使用QThread吗?

最佳答案

您不必使用多线程。在'Engine'类中创建指针,如下所示:

QProgressBar* ReferenceBar;


您还需要在“ Engine”类中创建setter,以供参考:

void setBar(QProgressBar* bar){
     ReferenceBar = bar;
}


在GUI中,您必须直接设置进度条:

instanceOfEngine = new Engine();
...
instanceOfEngine->setBar(progressBar);


并在“引擎”循环中激活更新栏:

Start(){
...
for(int i=0; i < x; i++){
     //computing....
     ReferenceBar->setValue(100*i/(x-1));
}

关于c++ - qt gui如何从另一个类获得进展,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27982456/

10-11 00:56
查看更多