[Qt4] QThread, QTimer -> wie ist es richtig?

Alles rund um die Programmierung mit Qt
Antworten
apfei01
Beiträge: 17
Registriert: 2. Oktober 2005 22:04

[Qt4] QThread, QTimer -> wie ist es richtig?

Beitrag von apfei01 »

hallo,

ich moechte in einem qthread eine funktion implementieren, die in regelmaessigen abstaenden (1 sekunde) im hauptprogramm ein qlabel mit der aktuellen uhrzeit aktualisiert. beide varianten funktionieren prinzipiell - nur welche wuerdet ihr vorziehen und warum?

variante 1:

Code: Alles auswählen

Clock::Clock () : QThread () {
	
	start ();	
}

void Clock::run () {

	QTimer *timer = new QTimer ();
	connect (timer, SIGNAL (timeout ()), this, SLOT (update ()));
	timer -> start (1000);
	
	exec ();
	 
}

void Clock::update () {
	
		QMutexLocker locker(&mutex);
			
		QTime time = QTime::currentTime ();
		QString time_string = time.toString ("hh:mm:ss");
		emit updateClock (time_string);
}
variante 2:

Code: Alles auswählen

Clock::Clock () : QThread () {
	
	start ();	
}

void Clock::run () {

	forever {
		
		QMutexLocker locker(&mutex);
			
		QTime time = QTime::currentTime ();
		QString time_string = time.toString ("hh:mm:ss");
		emit updateClock (time_string);
	
		msleep (1000);
	}
}
73!
andy/dg0jaj
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Keine von beiden. Ich würde Variante 1 ohne QThread direkt ins Hauptprogramm einbauen.
apfei01
Beiträge: 17
Registriert: 2. Oktober 2005 22:04

Beitrag von apfei01 »

hallo upsala,

danke für deine schnelle antwort. ich denke, ich habe mich etwas missverständlich ausgedrückt: mir ging es mehr um einen 'ordentlichen' programmierstil - und hier im speziellen wie man einen QThread zusammen mit einem QTimer korrekt verwendet/initialisiert. es ist sicherlich praktischer, das ganze im hauptteil einzubauen ...

vielleicht könntest du in diesem zusammenhang nocheinmal beide varianten bewerten?

73,
andy/dg0jaj.
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Tja, dann ist natürlich Variante 1 Interessanter, da du in Variante 2 keine anderen Dinge im Thread mehr erledigen kannst. Ein simples wait(...) ist meiner Meinung nach immer schlechte Programmierstil...
Antworten