Signals and slots

Signals and slots is a language construct introduced in Qt[1] for communication between objects which makes it easy to implement the observer pattern while avoiding boilerplate code. The concept is that GUI widgets, and other objects, can send signals containing event information which can be received by other objects using special member functions known as slots. This is similar to C/C++ function pointers, but the signal/slot system ensures the type-correctness of callback arguments.[citation needed]

The signal/slot system fits well with the way graphical user interfaces are designed.[citation needed] Similarly, the signal/slot system can be used for other non-GUI usages, for example asynchronous I/O (including sockets, pipes, serial devices, etc.) event notification or to associate timeout events with appropriate object instances and methods or functions. It is easy to use and no registration/deregistration/invocation code need to be written, because Qt's metaobject compiler (MOC) automatically generates the needed infrastructure.

A spreadsheet programs update system could be implemented using signals and slots such that when a cell is changed, its dependent cells are notified/updated.

## Contents

* 1 Alternative implementations
* 2 See also
* 3 Libraries
* 4 References

## Alternative implementations

There are some implementations of signal/slot systems based on C++ templates, which don't require the extra metaobject compiler, as used by Qt, such as libsigc++, sigslot, vdk-signals, nano-signal-slot, neosigslot, Signals, boost.signals2, Synapse, Cpp::Events, Platinum, JBroadcaster and KDBindings. Common Language Infrastructure(CLI) languages such as C# also supports a similar construct although with a different terminology and syntax: events play the role of signals, and delegates are the slots. Another implementation of signals exists for ActionScript 3.0, inspired by C# events and signals/slots in Qt. Additionally, a delegate can be a local variable, much like a function pointer, while a slot in Qt must be a class member declared as such. The C based GObject system also provides similar functionality via GSignal. In D it is implemented by std.signals.

## See also

* Observer pattern
* Signal programming
* Delegate (CLI)

## Libraries

Java: sig4j \- multi-threaded, type-safe, based on the FunctionalInterface annotation introduced in Java 8.

C++: vdk-signals \- thread-safe, type-safe, written in C++11 with atomic variables.

## References

1. ↑ "Signals & Slots - QtCore 5.1". Qt Project. 2013-07-04. http://qt-project.org/doc/qt-5.1/qtcore/signalsandslots.html. Retrieved 2013-07-04.

* v
* t
* e

Qt platform

GUIs built with Qt|

* AsteroidOS
* KDE Plasma
* Kdenlive
* KDE Partition Manager
* FeatherPad
* Lubuntu
* Lumina
* LXQt
* MeeGo
* Sailfish OS
* Skanlite
* VLC

Qt technologies|

* Meta-object System
* QML
* QtScript
* Qt Quick
* Qt Style Sheets
* Signals and slots

Tools|

* Qbs
* qmake
* Qt Creator
* Qt Linguist

Language bindings|

* List for Qt 4
* List for Qt 5
* PHP-Qt
* PyQt
* PySide
* QtRuby
* Qt Jambi
* hbQT

Supported platforms|

* Android
* Linux
* Windows
* Windows 10 Mobile
* macOS
* iOS
* QNX
* VxWorks

Related topics|

* KDE
* Mer
* MeeGo
* The Qt Company
* Qt Project
* Qt releases

* Software that uses Qt
* KDE Software
* Commons

0.00

(0 votes)

Original source: https://en.wikipedia.org/wiki/Signals and slots. Read more

|

Retrieved from "https://handwiki.org/wiki/index.php?title=Software:Signals_and_slots&oldid=692025"
*[v]: View this template
*[t]: Discuss this template
*[e]: Edit this template