Seite 1 von 1

[Gelöst] Signal und Sources

Verfasst: 14. Juli 2007 10:56
von May-C
Hallo
Kann mir jemand verraten wie die Signal Slot funktion bei qtjambi funktioniert. Bin hier jetzt schon ewig am rumprobieren aber es funktioniert nicht. Leider habe ich auch keine Doku oder Example dazu gefunden. Es ist mir klar das es etwas mit QSignalEmitter zu tun haben muss.

Ausserdem würde ich noch gerne wissen ob man den Source von qtjambi irgendwie zu Eclipse hinzufügen kann. Dann hätte ich mir nämlich den QPushButton anschauen können und hätte gesehen wie dort das Signal clicked implmentiert ist.

Ich hoffe es kann mir jemand helfen.

Verfasst: 14. Juli 2007 15:29
von ArneStocker
Beispiel Klick auf Pushbutton

Code: Alles auswählen

this.m_ui.PushButton.clicked.connect(this,"OnClicked()");
Beispiel eigenes Signal

Code: Alles auswählen

   // SIGNAL erzeugen
   Signal0 m_leerSignal = new Signal0();
   Signal1<String> m_textSignal = new Signal1<String>();

   // SIGNAL mit SLOT verbinden
   m_leerSignal .connect(this,"OnLeerSignal()");
   m_textSignal.connect(this,"OnTextSignal(String)");

   // SLOT
   public void OnLeerSignal() {
   // ...
   }
   public void OnTextSignal(String text) {
   // ...
   }

   // SIGNAL auslösen
   m_leerSignal.emit();
   m_textSignal.emit("Hallo");

Verfasst: 14. Juli 2007 15:58
von May-C

Code: Alles auswählen

// SIGNAL erzeugen
   Signal0 m_leerSignal = new Signal0();
   Signal1<String> m_textSignal = new Signal1<String>(); 
Hast du das auch mal ausprobiert ? Das funktioniert hier nämlich nicht. Eclipse meldet mir:
No enclosing instance of type QSignalEmitter is accessible ...

Verfasst: 14. Juli 2007 16:31
von ArneStocker
natürlich ... :roll:

stellt doch mal den (ggf. um die nicht relevanten Teile gekürzten) Beispielcode hier ein.

Gruß Arne

PS.: Du kannst Dir auch die Klasse SignalCollector (in diesem Forum) downloaden, die macht nämlich von QSignalEmitter Gebrauch.

PPS.: wenn ich es richtig verstehe handelt es sich bei QSignalEmitter um einer innere Klasse von QObject. Die Klasse in der Du Signal0 oder was auch immer verwendest muss daher wohl von QObject abgeleitet sein.

Verfasst: 15. Juli 2007 17:08
von May-C
Vielen Dank für die Hilfe. Schuld war meine Unfähigkeit. Habe nämlich das extends QObject vergessen... :oops: