this is meant to be a discussion about how do you think is best to realize specialized components. Imagine you are developing a widget, that contains other widgets as well as actions.When a certain action is triggered, the widget must "invoke" a defined behaviour, that can change depending on the widget(s) internal status.
I see two possible solutions to the problem:
the widget computes an internal status summary and emits a signal with such status summary (could be just an int, an sql record, or something else
the widget computes its internal status and calls a virtual method (on itself or another object, it does not matter) with such status
The only difference I can see between the two above is that using signals it is possible to connect more than one "listener" to the event, but it must be noted that usually a behaviour is implemented in a single space, so this does not sound soo much a limitation. Nevertheless, the adoption of signals could make the widget a complete class, without requiring you to subclass it and have to override methods. Again, this does not sound too much bad for complex and quite specialized components.
At the end it seems to me only a problem of how many signals and slots are involved in the process. For instance, considering the triggering of an action:
a slot is invoked to manage the action
the slot computes the internal state and
invokes a method OR emits a signal
the final method/slot is invoked