QThread - eigenes SIGNAL funktioniert nicht

Alles rund um die Programmierung mit Qt
Antworten
Gruwe
Beiträge: 21
Registriert: 14. April 2011 18:15

QThread - eigenes SIGNAL funktioniert nicht

Beitrag von Gruwe »

Hallo,

ich habe folgendes Problem:

Ich habe in meinem Programm, in welchem ich eine von QThread abgeleitete Klasse eingefügt habe. Der Thread wird von dem Programm gestartet (nach Klick auf Button), läuft dann in Endlos-Schleife und frägt Daten ab (von einer angeschlossenen Hardware). Der Thread läuft erstmal so lange, bis er vom Programm (auch wieder Button-Signal) beendet wird. Das funktioniert alles wunderbar!

Nun kann der Fall auftreten, dass etwa die Verbindung zur angeschlossenen Hardware abbricht (oder eben andere unerwünschte Zustände). Hierzu liefert die Bibliothek eine passende Methode. Bei jedem Schleifendurchlauf wird die Methode aufgerufen. Ist die Antwort der Methode korrekt (kein Fehlerzustand), wird der eigentliche Code ausgeführt. Wird ein anderer Wert zurückliefern, so soll das Programm innerhalb dessen meine QThread-Instanz läuft, den QThread beenden und die Fehlerbearbeitung durchführen.

Mein Code hierzu sieht wie folgt aus:

CarThread.h

Code: Alles auswählen

class CarThread : public QThread
{
Q_OBJECT

public:
	CarThread( QWidget* );
	
private:
	QWidget *parent;
...

signals:
	void On_ErrorStatus();

CarThread.cpp

Code: Alles auswählen

CarThread::CarThread( QWidget *parentPointer)
{
	parent = parentPointer;
	QObject::connect( this, SIGNAL( On_ErrorStatus() ), parent, SLOT( SetConnectionUnready() ) );
}


void CarThread::ReadFromHardware()
{
	if( GetStatus( ) == OK )
	{
		ReadData();
	}
	else
	{
		emit On_ErrorStatus();
	}
}
Das sind so die Code-Schnipsel, die ich hierfür als notwendig erachte!

Als Fehlermeldung während des Build-Vorgangs erhalte ich: "Error: Class declaration lacks Q_OBJECT macro."

Habe jetzt schon 2 Stunden im Netz gesucht und probiert...leider führt nix zum Ergebnis!

Hat hier irgendwer ne Idee, woran das Problem liegen könnte?
Schmeiss ich den Code für das Signal raus, läufts wunderbar!

MfG und Danke
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Re: QThread - eigenes SIGNAL funktioniert nicht

Beitrag von Christian81 »

Abgesehen vom Compiler-Fehler würde ich sagen Du solltest Dir erstmal die QThread Doku anschauen denn das was Du da machst kann m.E. nicht wirklich funktionieren...
http://doc.qt.io/qt-5/qthread.html#details

Und für den Fehler - bitte die komplette Fehlermeldung - man sieht hier nicht auf welche Klasse sich der Fehler bezieht usw.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Antworten