QT QObject::connect funktioniert nicht
-
Zur Erklärung hier inline deklariert.
Klasse B führt irgendwelche Berechnungen aus.
Teilweise will ich mir Zwischenergebnisse ausgeben lassen. (kein cout)
Diese Ausgaben sollen in einem im Klasse A angelegten QTextEdit angezeigt werden. Die Klassen sind in keiner Form voneinander abgeleitet.class B { void berechne(void) { int a = 10; emit information("Lieferantennummer _sLfrnr: " + _sLfrnr + "\n\n"); } signals: void information(const QString &) {} };
starteBerechnung() ist auch ein Slot, aber bis dahin funktioniert es auch.
#include "b.h" class A { Q_OBJECT public slots: void info(const QString &); void starteBerechnung(void) { daten = new A(); daten->berechne(); connect( daten, SIGNAL( information(const QString &)), this, SLOT(info(const QString &))); // bzw. // connect( &(*daten), SIGNAL( information(const QString &)), this, SLOT(info(const QString &))); } };
Fehlermeldungen sind:
A.cpp: In member function `void A::starteBerechnung() ': A.cpp:12: error: no matching function for call to `A ::connect(B*, const char[30], A* const, const char[29])' /usr/local/qt/include/qobject.h:116: error: candidates are: static bool QObject::connect(const QObject*, const char*, const QObject*, const char*) /usr/local/qt/include/qobject.h:227: error: bool QObject::connect(const QObject*, const char*, const char*) const make: *** [.objLin/BerAnzeigeImpl.o] Error 1
bzw:
A.cpp: In member function `void A::starteBerechnung() ': A.cpp:14: error: no matching function for call to `A ::connect(B*&, const char[30], A* const, const char[29])' /usr/local/qt/include/qobject.h:116: error: candidates are: static bool QObject::connect(const QObject*, const char*, const QObject*, const char*) /usr/local/qt/include/qobject.h:227: error: bool QObject::connect(const QObject*, const char*, const char*) const make: *** [.objLin/BerAnzeigeImpl.o] Error 1
Ich habe schon vieles ausprobiert noch nichts lässt Fehlermeldungen verschwinden. Geht mein Vorhaben überhaupt?
MfG
blueheart :xmas1:
-
Kenn mich nicht mit QT aus, aber musst du nicht in deiner klasse ein Q_OBJECT oder so einfügen?
-
phlox81 schrieb:
Kenn mich nicht mit QT aus, aber musst du nicht in deiner klasse ein Q_OBJECT oder so einfügen?
ja stimmt, habe ich auch. Ok, dann editier ich noch mal meinen Beitrag.
-
Hi,
vielleicht sollest auch ein Object der Klasse B erstellen und nicht von A.
Außerdem muss B von Q_OBJECT abgeleitet sein, sonst wird das Teil nie ein signal abschicken.mugglemaster
-
Ich meinte natürlich nicht von Q_OBJECT ableiten, sondern von QOBject ableiten.
Und jede Klasse die ein signal oder slot haben will muss auch ein QObject sein.
Dementsprechend sollte sowohl A als auch B von QObject erben.mugglemaster
-
mugglemaster schrieb:
Dementsprechend sollte sowohl A als auch B von QObject erben.
mugglemasterja stimmt, ein einfaches public QObject hilft. Verwirrend nur das die Fehlermeldung in der anderen Klasse war, wo ich schon von QObject geerbt habe.
Vielen Dank
blueheart :xmas1: