In software systems, there is often the need to couple different objects. Ideally, this coupling should be loose—that is, not dependent on the system's compile-time configuration. This is especially obvious when you consider user interfaces—for example, a button press might adjust the contents of a text widget, or cause something to appear or disappear. Many systems use events for this purpose; components offering data encapsulate that data in an event, and an event loop (or, more recently, an event listener) catches the event and performs some action. This is known as event-driven programming or the event model.
Qt offers the signals and slots mechanism as interfaces to manage events, such as the click event, selection change event, text input event, and so on. When a user does something and an event is triggered, the object (that...