005
31.08.2004, 21:24 Uhr
typecast
aka loddab (Operator)
|
Also das was Windalf vorgeschlagen hat, ist eine Moeglichkeit. Allerdings kann es da zu ganz schoen ueblen Querverflechtungen kommen, wenn man dann noch einen Wert zurueckgibt...
Deshlab sollte man so was vermeiden. Qt bietet da dass Signal/Slot Prizip an:
Wenn wir den Variablenwert der von einer Klasse A zu einer Klasse B uebergeben wollen, dann muss in der Senderklasse ein Signal erstellt werden und in der Empfaengerklasse ein dazugehoeriger Slot:
C++: |
class A : public QObject { Q_OBJECT // das ist sehr wichtig, sonst funktioniert es nicht ... signals: void uebergebeWert(int); wenn wir einen int wert uebergeben wollen };
class B : public QObject { Q_OBJECT // auch hier wichtig public slots: void bekommeWert(int wert) { /* hier kannst du dann mit dem wert arbeiten, ihn abspeichern... */ } };
|
Dann musst du ja irgendwo Instanzen der beiden Klassen erstellen. Zu dem Zeitpunkt verbindest du dann das signal mit dem Slot (hier in der main funktion)
C++: |
A sender; B empfaenger; QObject::connect(&sender, SIGNAL(uebergebeWert(int)), &empfaenger, SLOT(bekommeWert(int)));
|
Damit kann jetzt ein Wert uebergeben werden. Jetzt musst du nur noch festlegen, wann der Wert uebergeben wird. Um den Wert jetzt endgueltig zu uebergeben machst du einfach
C++: |
void A::irgendeineFunktio() { // .... int irgendeinwert = 10; emit uebergebeWert(irgendeinwert); // .... }
|
Und schon hast du B den Wert uebergeben. -- All parts should go together without forcing. ... By all means, do not use a hammer. (IBM maintenance manual, 1925) |