Anzeige:
Ergebnis 1 bis 3 von 3

Thema: connect zwischen klassen

  1. #1
    Registrierter Benutzer
    Registriert seit
    24.08.2004
    Beiträge
    749

    connect zwischen klassen

    Hallo,
    seit stunden dran und kein ergebnis. Ich will nur gaaanz einfach
    2 Klassen durch einen connect so verbinden:

    klasse1:
    Code:
    #include <QObject>
    
    class Class1 : public QObject
    {
        Q_OBJECT
        public:
         ...
    
        signals:
               void test();
    Hier die Implementierung:
    Code:
    Class1::method1()
    {
        emit test();
    }
    und der receiver nur die Impl.

    Code:
    Class2::method2()
    {
          Class1 c;
          connect(&c, SIGNAL(test()), this, SLOT(ausgabe());
    }
    
    Class2::ausgabe()
    {
        std::cout << "hier" << std::endl;
    }
    ich rufe method2 z.B wo anders in der KLasse Class2 auf oder auch von anderen Klasseren aus. Es kompiliert prima aber irgendwie läuft er nie in die Methode ausgabe() gibt also nichts aus...wo ist mein denkfehler?

  2. #2
    Registrierter Benutzer
    Registriert seit
    27.04.2004
    Beiträge
    11
    Die Class1 c ist lokal in der Methode, wird daher bei Methodenende vernichtet. Pack sie woanders hin, dann sollte das passen. Ausserdem rufst du nie Class1::method1 auf, zumindest nicht von genau diesem Objekt.

  3. #3
    Registrierter Benutzer
    Registriert seit
    24.08.2004
    Beiträge
    749
    hmm ich hätte noch eine frage:
    muss ich denn in der Klasse in der ich das signal connecte die methode der klasse aufrufen die das signal sendet? Oder kann ich z.B eine methode einer anderen KLasse aufrufen die erst dann die Methode der 3-ten Klasse aufruft?

    Also sprich: Ist es nicht so dass auch Klassen die nicht direkt die methode aufrufen die das emit beinhalten das signal connecten wenn diese das emit ausschickt?

    IM moment habe ich es so:

    Klasse 1 ruft methode(a) in klasse 2 auf.
    methode(a) in Klasse 2 ruft methode(b) in Klasse3 auf.
    erst methode(b) macht das emit.

    Und ich connecte das signal von methode(b) mit Klasse1!
    D.H indirekter Aufruf von methode(b).

    Geht sowas nicht?

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •