Yeah, those are alredy hookep up automatically. This behaves the same as the native widgets. If you place a native button in a native canvas, you’ll also get 5 or so click events from the get-go. Without additional binding. The parent can see its childrens’ dispatchers. Same thing here.
Also works for actors and components.
We need to set the text somehow, though. You could expose the text block as variable and avoid the custom event.
Or you could bind a text variable to a text block and set only that variable’s value from outside. Really minimalistic but polled every frame. Fine if that’s just a handful of text fields or you need this updated every frame anyway.
Finally, for an utterly nodeless experience, you can give the child button a reference to the actor / widget it needs to pull the data from. You can actually do this when binding:
ObjectRef.struct.SomeOtherObjectref.transform.text
A little nighmare to debug and hard references to handle.