Ich habe eine ProgressBar die ich in der StatusBar meines Fensters unterbringe:
Code: Alles auswählen
mProgressBar = new ProgressBar();
mProgressThread = new ProgressThread();
this->statusBar()->addPermanentWidget(mProgressBar);
Innerhalb meiner Execute()-Methode rufe ich dann zunächst:
QObject::connect(this->mProgressThread, SIGNAL(CurrentProgress(int)), mProgressBar, SLOT(UpdateCurrentProgress(int)), Qt::QueuedConnection);
this->mProgressThread->start(QThread::NormalPriority);
auf und starte den Thread welcher über die run()-Funktion ein Signal an die ProgressBar triggert um den entsprechenden Wert zu setzen:
Code: Alles auswählen
void ProgressThread::run()
{
int iCount = 10;
while(this->isRunning()){
if(iCount > 100){
emit CurrentProgress(100);
}//if
emit CurrentProgress(iCount);
iCount += 10;
}//while
}//run()Das Problem ist das die ProgressBar nicht parallel zu den StatusMeldungen der Statusbar laufen.
Weiter habe ich festgestellt das sich der Thread nur über ein terminate() killen lässt. Das quit() / exit() tut nicht, die Anwendung friert hierbei ein.
In der *.pro Datei ist
CONFIG += thread gesetzt. Allerdings führt dies zu keiner Verbesserung.
Ziel ist schlichtweg das ordnungsgemäße Beenden des Threads sowie die das synchrone Laufen der ProgressBar zum StatusOutput.
Danke im Vorraus für die Hilfe!