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:


  • Mod

    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.
    mugglemaster

    ja 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:


Anmelden zum Antworten