Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » KDevelop / Qt / wxWidget » Signale/Slots

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
30.11.2004, 19:09 Uhr
derphilipder



Hi!

Ich versuche gerade, das Signal/Slot Konzept zu verstehen.

Wenn ich eine Signal-Methode habe, die einen int-Wert als Signal hat, ist dann dieser Wert der Rückgabewert der Methode? Oder wie, oder was?

gruß Philip
--
Konfuzius says: "A man who goes to bed with an itchy asshole is a man who wakes up with stinky finger!"
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
30.11.2004, 20:07 Uhr
typecast
aka loddab
(Operator)


Jaein. Also ganz so ist es nicht. Signale haben keinen Rueckgabewert, sondern nur Parameter.


C++:
class foo : public QObject {
Q_OBJECT
public:  foo() { }
            void sendSignal() { emit mySignal(10); }
signals:
            void mySignal(int);
};



Das hier ist eine Klasse, die beim aufrufen der Funktion sendSignal() das Signal mySignal emitiert. Als Parameter wird 10 uebergeben. Die Klasse ist vollstaendig, d.h ein Signal wird nicht implementiert (und kann somit nichts zurueckgeben).


C++:
class bar : public Qbject {
Q_OBJECT
public: bar() { f = new foo(); connect (f, SIGNAL(mySignal(int)), this, SLOT(mySlot(int))); }
           ~bar() { delete f; }
public slots:
           void mySlot(int a) { std::cout << a << std::endl; }
protected:
           foo f;
};



Diese Klasse hier hat einen Slot, der ein int akzeptiert. Das entscheidende ist das connect: Es sorgt dafuer (zusammen mit dem moc precompiler), dass wenn das Signal mySignal emitiert wird, die Mehtode mySlot aufgerufen wird. Als Parameter wird dann quasi das Uebergeben, was dem Signal als Parameter mitgegeben wurde.

Das Signal ist im Grunde genommen nur eine bequeme Schnittstelle fuer das ansprechen der Slots. Der Programmierer der Klasse stellt ein Signal zur Verfuegung und sorgt dafuer, dass alle anderen Klassen von einem Ereignis informiert werden, indem er ein Signal erzeugt.
--
All parts should go together without forcing. ... By all means, do not use a hammer. (IBM maintenance manual, 1925)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
30.11.2004, 20:20 Uhr
derphilipder



Das hab ich verstanden! Besten Dank!
--
Konfuzius says: "A man who goes to bed with an itchy asshole is a man who wakes up with stinky finger!"
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ KDevelop / Qt / wxWidget ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: