Seite 1 von 1

QThread blockiert GUI bei abbruch

Verfasst: 28. Mai 2010 14:13
von marvel
hallo,
ich habe einen converter mit GUI geschrieben. während des konvertierungsvorgangs wird ein weiterer thread gestartet der die berechnungen durchführt und somit die GUI nicht blockiert wird. jetzt kann es aber vorkommen das der user den konvertierungsvorgang abbrechen möchte. QThread::wait() blockiert die GUI und QThread::terminate() soll man ja nicht benutzen. was wäre eine vernüftige alternative um einen thread abzubrechen und dennoch die GUI nicht zu blockieren ?

kann man auch ne pause-fkt einbauen ?

Re: QThread blockiert GUI bei abbruch

Verfasst: 28. Mai 2010 14:32
von pfid
marvel hat geschrieben:hallo,
ich habe einen converter mit GUI geschrieben. während des konvertierungsvorgangs wird ein weiterer thread gestartet der die berechnungen durchführt und somit die GUI nicht blockiert wird. jetzt kann es aber vorkommen das der user den konvertierungsvorgang abbrechen möchte. QThread::wait() blockiert die GUI und QThread::terminate() soll man ja nicht benutzen. was wäre eine vernüftige alternative um einen thread abzubrechen und dennoch die GUI nicht zu blockieren ?

kann man auch ne pause-fkt einbauen ?
Das kommt auf deine Implementierung an. In der Regel setzt man sich ein Flag und fragt das in der Run-Loop ab. Eine Stop-Funktion setzt dieses Flag dann, so dass der Thread die Run-loop verlässt.

Verfasst: 28. Mai 2010 18:17
von marvel
in der run() funktion werden zwei funktionen aus einer klasse aufgerufen.

Code: Alles auswählen

Converter_Thread::Converter_Thread(Converter *con) : QThread()
{
	converter = con;
}

Converter_Thread::~Converter_Thread()
{

}

void Converter_Thread::run()
{
	stop = converter->startParser();
	if(!stop)
	{
		return;
	}
	converter->startConverter();
}
ich habe das ganze nun so gelöst das wenn ich den cancel button drücke das die startParser() funktion false zurückgibt und dann einfach returned wird. ich denke darauf wolltest du hinaus.