Signals and slots
The fundamental part of any GUI program is the communication between the objects. Signals and slots provide a mechanism to define this communication between the actions that happened and the result that is proposed for the respective action. Prior to Qt's modern implementation of signal or slot mechanism, older toolkits achieved this kind of communication through callbacks. A callback is a pointer to a function; so, if you want a processing function to notify about some event, you pass a pointer to another function (the callback) to the processing function. The processing function then calls the callback whenever appropriate. This mechanism does not prove useful in the later advancements due to some flaws in the callback implementation.
A signal is an observable event, or at least a notification that the event has happened. A slot is a potential observer; usually, it is a function that is called. In order to establish communication between them, we connect a signal to a...