Hallo Zusammen, ich habe in meiner Anwendung einen GtkToggleButton. Dieser kann einerseits vom Benutzer betätigt werden, aber auch vom Programm durch set_active(). Nun möchte ich in der mit dem 'toggled'-Signal verknüpften Methode feststellen, woher das Ereignis kam (Auf den Knopf gedrückt, oder set_active()). Weiß hier jemand wie das geht? MfG, Lukas
Dazu gibt es das Signal "clicked" Dieses wird nur bei User-Betätigung "gefeuert". gtk_signal_connect(GTK_OBJECT(button), "clicked", ...
Jürgen W. schrieb: > Dazu gibt es das Signal "clicked" > Dieses wird nur bei User-Betätigung "gefeuert". So dachte ich auch... Aber die GTK-Entwickler wohl nicht. Im Anhang ist ein Test-Programm zum nachvollziehen: Der clicked-Event wird auch bei set_active ausgelöst
Sorry, ich hatte das nur noch in vager Erinnerung. Workarounds gibt auch ohne spezielle Signale. Wenn Du den Button vom Programm aus änderst, kannst Du ein Flag setzen. Wenn dann das Signal/Callback von gtk_main() aufgerufen wird, prüft Dein Handler zunächst das Flag. Wenn es gesetzt ist, wird es gelöscht und keine weitere Aktion ausgeführt.
Der Vollständigkeit halber, falls jemand den Thread hier findet und nicht dieses Erlebnis haben muss: http://xkcd.com/979/ Im event-handler ruft man Gtk.get_current_event() auf. Wenn jemand "programmatisch" am Widget gewackelt hat, gibt die Funktion None zurück, sonst den Event.
:
Bearbeitet durch User
Lukas K. schrieb: > Im event-handler ruft man Gtk.get_current_event() auf. Wenn jemand > "programmatisch" am Widget gewackelt hat, gibt die Funktion None zurück, > sonst den Event. Ich glaube ich hatte damals deine Anfrage gesehen, konnte aber nicht helfen. Dass sich jemand mit der Lösung des Problems zurückmeldet ist ja hier die große Ausnahme, üblich ist wohl eher den Thread schnell löschen zu lassen, damit nicht noch ein anderer von der Antwort profitiert. ;-) Na ich hoffe Du hast jetzt nicht die vollen 13 Monate an dem Problem geknobelt -- auf der GTK-Mailingliste sollte es ja dann doch eine Antwort gegeben haben. Wenn nicht, dann sollte ich vielleicht doch mal über Qt nachdenken...
Stefan Salewski schrieb: > Lukas K. schrieb: >> Im event-handler ruft man Gtk.get_current_event() auf. Wenn jemand >> "programmatisch" am Widget gewackelt hat, gibt die Funktion None zurück, >> sonst den Event. > > Ich glaube ich hatte damals deine Anfrage gesehen, konnte aber nicht > helfen. > Dass sich jemand mit der Lösung des Problems zurückmeldet ist ja hier > die große Ausnahme, üblich ist wohl eher den Thread schnell löschen zu > lassen, damit nicht noch ein anderer von der Antwort profitiert. ;-) > > Na ich hoffe Du hast jetzt nicht die vollen 13 Monate an dem Problem > geknobelt -- auf der GTK-Mailingliste sollte es ja dann doch eine > Antwort gegeben haben. Wenn nicht, dann sollte ich vielleicht doch mal > über Qt nachdenken... Keine Bange, gab noch andere Dinge dazwischen ;) Bin auch mehr zufällig darauf gestoßen, als ich herausfinden wollte, wie man feststellt ob zu einem event noch shift/ctrl gedrückt war. War dann damals wohl doch nicht dringlich genug, sich auf die Gtk-Mailingliste zu subscriben... An Qt konnte mich der Qt-Designer oder wie das Qt-Äquivalent zu Glade auch immer heißt nicht recht überzeugen.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.