Это очень открытый вопрос - например, вы можете создать свой собственный класс обработчика статических событий, на который подписываются виджеты. например:
Class newMessageHandler {
void update(Widget caller, Widget subscriber) {
...
}
}
customEventHandler.addEventType("New Message", newMessageHandler);
Widget w;
customEventHandler.subscribe(w, "New Message");
...
Widget caller;
// Fire "New Message" event for all widgets which have
// subscribed
customEventHandler.fireEvent(caller, "New Message");
Где customEventHandler отслеживает все виджеты, подписывающиеся на каждое именованное событие, и вызывает метод обновления для именованного класса, который затем может вызывать любые дополнительные методы, которые вы хотите. Возможно, вы захотите отменить подписку в деструкторе, но вы можете сделать это так, как вам хочется.