Slots are almost identical to ordinary C++ member functions. They can be virtual; they can be overloaded; they can be public, protected, or private; they can be directly invoked like any other C++ member functions; and their parameters can be of any types. The difference is that a slot can also be connected to a signal, in which case it is automatically called each time the signal is emitted.
The connect() statement looks like this:
connect(sender, SIGNAL(signal), receiver, SLOT(slot));
where sender and receiver are pointers to QObjects and where signal and slot are function signatures
without parameter names. The SIGNAL() and SLOT() macros essentially convert their argument to a string.
disconnect(lcd, SIGNAL(overflow()), this, SLOT(handleMathError()));
This is rarely needed, because Qt automatically removes all connections involving an object when that object
is deleted.
The signals and slots mechanism can be used by any QObject subclass