Qthread und exec()

Alles rund um die Programmierung mit Qt
Antworten
MisterJ
Beiträge: 21
Registriert: 20. November 2008 12:21

Qthread und exec()

Beitrag von MisterJ »

Hallo Forenmitglieder,

bisher habe ich Threads benutzt und nur die run()-Funktion überladen. Nun brauche ich aber mehrere Funktionen, die in dem gleichen Thread laufen sollen. Dazu habe ich die run()-Funktion wie folgt geschrieben:

Code: Alles auswählen

void DataThread::run(void)
{
	exec();
}
Dann habe ich folgende zwei Test-Funktionen erstellt:

Code: Alles auswählen

void DataThread::FunctionOne(void)
{
	sleep(5000);
}

void DataThread::FunctionTwo(void)
{
	sleep(5000);
}
Wenn ich nun den Thread aus meiner Mainklasse (inklusive GUI) mit

Code: Alles auswählen

m_pDataThread->start()
starte und danach dann

Code: Alles auswählen

m_pDataThread->FunctionOne()
aufrufe, dann hängt meine GUI. Demnach läuft die Funktion ebenfalls auf der Mainklasse, wenn ich das richtig interpretiere.
Nachdem das nicht geklappt hatte, habe ich ein Signal emittiert, dass die FunctionOne() als Slot aufruft. Ebenfalls ohne Erfolg.
In dem Konstruktor des DataThread habe ich auch einmal testweise

Code: Alles auswählen

this->moveToThread(this);
eingegeben; mit dem gleichen Resultat.

Irgendwas scheine ich grundlegend falsch zu verstehen und deshalb bitte ich um Rat: Wie rufe ich eine Funktion auf, die in einem separaten Thread läuft.

Vielen Dank schonmal,
Johannes
Antworten