QThread-> finished()-Signal wird erzeugt, terminated() ni
Verfasst: 20. Januar 2007 14:58
Hi,
ich hab folgendes Problem.
Ich hab ne Gui mit der ich mit einem Button eine Instanz einer von QThread abgeleiteten Klasse erzeuge und den Thread starte.
Daraufhin wird der Btn disabled und soll, wenn der Thread fertig ist wieder enabled werden.
Hab also in meiner MainWindow-Klasse nen Slot threadTerminatedSlot() erzeugt
und diesen mit den Signalen terminated() und finished() des QThreads verbunden
Wenn der Thread ganz normal seine run()-Methode durchläuft funktioniert auch alles wunderbar. Wenn wärend der Ausführung des Threads (führt Berechnungen) durch ein Fehler auftritt, ruft dieser dann selber terminate() auf. Laut Doku sollte dann ja das Signal terminated() erzeugt werden.
Wenn ich den Thread aber von der Gui aus beende, also thread->terminate() aufrufe, lande ich im threadTerminatedSlot().
Was mach ich falsch???
ich hab folgendes Problem.
Ich hab ne Gui mit der ich mit einem Button eine Instanz einer von QThread abgeleiteten Klasse erzeuge und den Thread starte.
Daraufhin wird der Btn disabled und soll, wenn der Thread fertig ist wieder enabled werden.
Hab also in meiner MainWindow-Klasse nen Slot threadTerminatedSlot() erzeugt
Code: Alles auswählen
void MainWindow::threadTerminatedSlot()
{
startBtn->setEnabled(true);
QMainWindow::statusBar()->showMessage("Ready",0);
}
Code: Alles auswählen
m_bConnectRetValue = connect(thread,SIGNAL(terminated()),this,SLOT(threadTerminatedSlot()));
m_bConnectRetValue = connect(thread,SIGNAL(finished()),this,SLOT(threadTerminatedSlot()));
Aber leider passiert das anscheinend nicht. Wenn ich debugge wird der threadTerminatedSlot() nicht aufgerufen....void QThread::terminated () [signal]
This signal is emitted when the thread is terminated.
Wenn ich den Thread aber von der Gui aus beende, also thread->terminate() aufrufe, lande ich im threadTerminatedSlot().
Was mach ich falsch???