gtkmm
-
kann es vielleicht sein das man ein widget nicht mit 2 verschiedenen events verbinden kann?
bool pressEvent_1(..)
bool pressEvent_2(..)es wird nur das 1. signal verbunden und auch ausgelöst. das 2. wird gar nicht ausgelöst.
weiß da jemand mehr?
einen fall im internet konnte ich leider auch nicht finden
-
Ich weiß nicht was du haben willst, aber wenn du einfach nur zwei Funktionen aufrufen willst, kannst du das ja auch manuell tun:
bool pressEvent (..) { pressEvent_1(..); pressEvent_2(..); }
-
leider kann ich das nicht machen.
in einer button-klasse wird das release-Event 'effectRelease' an die instanz gebunden ( jeder button hat dieses event ).
dann gibt es noch eine menu-klasse welcher ein container ist für button-objekte. wenn ich ein button in den menu-container einfüge, dann soll die menu-klasse ein weiteres release-Event an die instanz binden.
aber wenn das nicht möglich ist sollte ich vielleicht mein design überdenken.
die frage die sich jetzt aufwirft: Kann man an einem Widget mehr als nur ein Event vom selben Event-Typ (z.bsp.:signal_release_event) anbinden?
-
keine gtk+ / gtkmm geeks hier?
-
[quote="asdfasdf"]keine gtk+ / gtkmm geeks hier?[/quote]
Ehrlich ueberrascht?
Vielleicht hat's was mit http://www.google.com/trends?q=gtk,qt zu tun? ;-}
-
Überdenk dein Design. Ich nehme an, dass das zusätzliche releaseEvent eine Action (ala boost::bind) ausführen soll. Gib deiner Button-Klasse doch einen setter für so eine Action. Frag im releaseEvent nach, ob eine Action gesetzt wurde. Falls ja -> Ausführen.
Oder du verwendest gleich das "clicked()"-Signal des Buttons.
http://library.gnome.org/devel/gtkmm-tutorial/unstable/sec-connecting-signal-handlers.html.en
Sollte für so dynamische connections sowieso verwendet werden.
-
Folgendes sagt die Dokumentation.
sigc++ Dokumentation schrieb:
iterator sigc::signal0< T_return, T_accumulator >::connect(const slot_type& slot_)
Add a slot to the list of slots.
sigc++ Dokumentation schrieb:
During signal emission all slots that have been connected to the signal are invoked unless they are manually set into a blocking state.
Mit anderen Worten, solltest du ein Event mit mehreren Events verbinden (connect), sollten die auch alle aufgerufen werden. Konstruiere mal ein minimales Code-Beispiel, in dem dein Problem auftritt.