Begin play does not happen when ALL actors are ready, it happens for when actor that begin play is in is ready.
So if Actor_A loads before Actor_B, and Actor_A uses get all actors of Actor_B class, it may get no actors_B at all, because none of they is yet loaded.
Because of this it is best to use middle man. In your case its safe to use player character (it loads before most of level actors).
So put your events in player character. Then widget triggers event in player character. And you can also make event dispatchers there that can be triggered etc.