Danke für eure Antworten! Ja, das mit dem MouseRelease über dem Button (wo schon der Click selbst über dem Button sein muss) ist mir schon klar. Das hab ich aktuell auch so im master implementiert: Hier ist der "Handler" für die Mouse Events fürs Zeichnen: https://github.com/JimmySnails/IsometricEngine/blob/805ee881cda8d89b7125eeadfbbe1e9951b20624/src/engine/uiManager.cxx#L131 Hier ist die Funktion im UI Manager, die das (erste) Element, dass unter dem Button liegt zurückliefert: https://github.com/JimmySnails/IsometricEngine/blob/805ee881cda8d89b7125eeadfbbe1e9951b20624/src/engine/uiManager.cxx#L185 Und hier ist die Funktion im Event Manager, die sich um die tatsächlichen Aktionen kümmert, die der Button auslösen soll: https://github.com/JimmySnails/IsometricEngine/blob/805ee881cda8d89b7125eeadfbbe1e9951b20624/src/engine/eventManager.cxx#L104 @mechanics sagte in GUI Entwicklung - Events: (die Rolle des UI Managers leuchtet mir hier dann eigentlich auch nicht ein) Der UI Manager ist u.a. dafür da, JSON Files (mit dem ganzen UI Layout, das soll mod-bar werden) zu parsen, und dementsprechend die UI Elemente zu instanzieren. @mechanics sagte in GUI Entwicklung - Events: Ich würds jetzt nicht als komplex bezeichnen... Was mir an der Fragestellung eher unklar war/ist, was dir jetzt daran konkret wichtig ist. z.B. hast du dich anscheinend am Begriff "Callback" gestört und ich war dann erstmal irritiert, ob´s dir um irgendwelche Haarspalterei mit dem Begriff geht, oder ob du einen ganz anderen technischen Ansatz suchst... Einen "Event-Handler" kann man immer als "Callback" bezeichnen. @mechanics sagte in GUI Entwicklung - Events: Ganz konkret hab ich mich jetzt auf die Aktion die beim Button Click ausgeführt werden soll bezogen. Mein Problem ist, dass ich mich noch nie mit UI Entwicklung beschäftigt habe und mir die Konzepte unklar sind. Drum bitte um Nachsicht Deinen Aufbau finde ich erstmal ungewohnt... Zum einen schon mal den Namen "onClick" im Button. Das ist deinem Aufbau relativ konsequent, aber ich weiß nicht, ob das eine gute Idee ist. Es ist normalerweise so, dass nicht der Button der eigentliche Konsument ist. Ich hätte eher erwartet, dass der Button einen Signal clickSignal hat, und die eigentlichen Konsumenten sich damit verbinden und deren Funktion von mir aus "onClick" heißt. Ja, der Button würde dann auch eine registerClickSignal() funktion bekommen, auf der man eine Callback Funktion auf das Click Signal registrieren kann. Diese (zweite, sich im Button selbst befindliche) Click Signal würden dann von der OnClick() Funktion emitted werden. Ich hab ja extra dazugeschrieben, dass ich mich bei meinem Pseudo Code Beispiel nur darauf beziehe, wie dieses Click Event am Button ausgelöst werden könnte. @mechanics sagte in GUI Entwicklung - Events: Allerdings willst du wahrscheinlich schon auch im Button selber auf den Klick reagieren und den z.B. anders zeichnen, während er gedrückt ist. Richtig, das mach ich momentan extrem umständlich über ein enum von aussen in dem uiManager (erster Link) und das würde ich lieber im Button machen. @mechanics sagte in GUI Entwicklung - Events: Und der Button wiederum hätte einen anderen Mechanismus, um vom Event Manager (die Rolle des UI Managers leuchtet mir hier dann eigentlich auch nicht ein) über den stattgefundenen Klick benachrichtigt zu werden. Wie gesagt, in Qt wär das so, dass der Event Dispatcher (ist denke ich auch ein besserer Name als Manager) dann bestimmt, welcher Button geklickt wurde (irgendwo muss man sich die Koordinaten und die z-Order anschauen), und dann auf dem Button event Aufruft. Und die Implementierung der event Funktion würde dann das Signal emitieren. Wenn ich das richtig verstehe, wäre das die Alternative, die ich kurz angesprochen habe. Also statt den Button selbst auf die Signale zu connecten, in der EventListener Basisklasse die handleEvents funktion aufzurufen, die dazugehörige (z.b. onMouseButtonRelease) aufzurufen, falls die Koordinaten (und die z-ORder...) richtig sind. Das kommt meiner Meinung nach auch auf dasselbe raus, nur halt ohne Signale. //eventloop if (clickEvent) { for (auto it : UiElementsVector) it->handleEvents(Eventdetails); } Die Signale selbst, würden dann nur für die Callback Funktion im Button verwendet werden. (Und nicht, um das Click-Event im Button selbst auszulösen!) Von aussen, (z.b. im UI Manager nach dem Instanzieren) würde dann eine Funktion (z.b. quitGame()) mit dem Button über die registerClickSignal() funtkion verknüpft werden. Ist das so sinnvoller? Wirklich einen Vorteil von den Signalen seh ich jetzt auch nur dann, wenn ich später eine Callback Funktion (die beim Knopfdruck ausgelöst werden soll) einfach zu verknüpfen. Beim selbst-auslösen des Events eher weniger. Sry, falls ich mich ein wenig kompliziert ausdrücke und danke für die Hilfe!