[geloest] Problem mit connect

Alles rund um die Programmierung mit Qt
Antworten
depp153
Beiträge: 10
Registriert: 6. Januar 2009 02:22

[geloest] Problem mit connect

Beitrag von depp153 »

Hi,

zum ertsen mal habe ich mit dem Befehl Connect Probleme.
Bei den 2 Befehlen

connect(m_pOptoInit, SIGNAL(sig_TcpConnected()), this, SLOT(tcpConnected()));
connect(m_pOptoInit, SIGNAL(sig_TcpDisconnected()), this, SLOT(tcpDisconnected()));

bekomme ich die Fehlermeldung:
no matching function for call to `SourceMostOptolyzer::connect(OptoInit*&, const char*, SourceMostOptolyzer* const, const char*)'

Die Signale sind in einer anderen Klasse selbst erstellt.
Namen der Signale, Slots un des Senders sind richtig...

Die Klassen sind wie folgt definiert
Die Klasse mit dem Slot:
class x : public Source // Source ist von Qthread abgeleitet
{
Q_OBJECT
...
};

Die Klasse des Signal-Senders :
class OptoInit
{
Q_OBJECT
...
};


Wenn ich die beiden connects auskommentiere, dann bekomme ich die selbe Fehlermeldung mit anderen connects in der Signal-Sender-Klasse.

Hat da jemand eine Idee, woran das liegen könnte?

Gruß
Depp153


PS: Das ist ein teilprojekt, das ich gerade in ein anderes Integriere.
Vor der Integration war die Klasse OptoInit von QDialog une einer *.ui abgeleitet. Im Hauptprojekt wurde nun aber festgelegt, dass es eine extra klasse gibt, die von dem Ui abgeleitet wird (configDialog) und ich über diese dann meine Zugriffe machen muss...
Zuletzt geändert von depp153 am 24. September 2009 14:27, insgesamt 1-mal geändert.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Include der Klasse OptoInit fehlt (wohl nur eine Vorwärtsdeklaration irgendwo) und daher kann der Compiler nicht wissen dass diese Klasse von QObject abgeleitet ist.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
depp153
Beiträge: 10
Registriert: 6. Januar 2009 02:22

Beitrag von depp153 »

Vielen Dank erst mal für die Antwort.
Aber ich benutze (noch) keine Vorwärtsdeklarationen und die OptoInit hab ich per include drinne.
Das ist es wohl dann leider nicht...

Außerdem, ich hab gerade mein kleines Versuchs-Projekt umgebaut, dass ich auch die Klasse ConfigDialog benutze.
Und da hab ich jetzt auch das selbe Problem.
Wobei ich jetzt x nicht mehr von Source ableite, sondern direkt von QThread.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Wenn m_pOptoInit und this beide irgendwie von QObject ableiten und an der Stelle des connect() - Aufrufes auch beide dem Compiler bekannt sind funktioniert es auch.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
depp153
Beiträge: 10
Registriert: 6. Januar 2009 02:22

Beitrag von depp153 »

Wie gesagt, ich bin da ja auch ratlos.
Die otpoInit leite ich direkt von QObject ab und die Klasse x von QThread.

Kann es an anderen Fehlern irgendwie liegen, so dass sich das darauf auswirkt?

Gruß
depp153
AuE
Beiträge: 918
Registriert: 5. August 2008 10:58

Beitrag von AuE »

[/quote]OptoInit*&[/quote]
verwundert mich....wie is das definiert?
depp153
Beiträge: 10
Registriert: 6. Januar 2009 02:22

Beitrag von depp153 »

nach dem ich jetzt alles geputzt habe (clean project) und dann PC neu gestartet (vermutlich unnötig der neustart), war dieses connect jetzt in Ordung.
Hat da evtl. der moc irgendwas nit sauber überschrieben???
K.A.

allerdings hab ich jetzt an anderer Stelle dieses connect problem.
In der OptoInit, welche ein Signal von ConfigDialog bekommt.

Hier die Def. der Klassen in den header-Files:

Code: Alles auswählen

#include "configure.h"
#include <QObject>
...
class OptoInit : public QObject
{
	Q_OBJECT

private:
	Configure* m_pConfigure;
...

private slots:
	bool connect();
...
};



#include <QDialog>
#include <ui_configDialog.h>
#include <QObject>
...
class Configure : public QDialog, Ui::configDialog
{
	Q_OBJECT

private:
...
        setupConnections()
...

signals:
	void sig_startMeasurment();
...
};
und hier die connect in der optoInit:

Code: Alles auswählen

void OptoInit::setupConnections()
{
       connect(m_pConfigure, SIGNAL(sig_startMeasurment()), this, SLOT(connect()));
...
}
Das Problem besteht bei sämtlichen connects die ich hier einbauen will...
AuE
Beiträge: 918
Registriert: 5. August 2008 10:58

Beitrag von AuE »

Überschreibst du die connect???????
class OptoInit : public QObject
{

private slots:
bool connect();
...
};
Tipp mal QObject::connect
RavenIV
Beiträge: 267
Registriert: 21. Januar 2009 14:24
Wohnort: Waldshut

Beitrag von RavenIV »

depp153 hat geschrieben: und hier die connect in der optoInit:

Code: Alles auswählen

void OptoInit::setupConnections()
{
       connect(m_pConfigure, SIGNAL(sig_startMeasurment()), this, SLOT(connect()));
...
}
Das Problem besteht bei sämtlichen connects die ich hier einbauen will...
Erstens: nur ein Hinweis:
Measurement schreibt man mit drei "e".

Dann:
Du darfst eine eigene Funktion nicht gleich nennen, wie eine Qt-Funktion.
"connect" existiert eben schon.
Linux, das längste Text-Adventure aller Zeiten
depp153
Beiträge: 10
Registriert: 6. Januar 2009 02:22

Beitrag von depp153 »

:shock: :shock: :shock:
Man, dass mir das nicht aufgefallen ist, dass ich das connect quasi überschreibe....
Da kann ich nur noch den Koprschütteln.
Ich glaub ich geh nochmal in das erste Semester und hör mir die Stelle mit Schlüsselwörter und so weiter an, genauso wie überschreiben von Funktionen....

Vielen DANK an alle!!!
Ohne euch würde ich bestimmt in 3 Tagen noch suchen.
Ich hoffe, dass ich auch mal so fit bin, dass ich hier entsprechende Antworten geben kann.

Danke nochmal

Gruß
Depp153
Antworten