При разработке GUI приложений с использованием фрейморка Qt взаимодействие компонент интерфейса с пользователем основано на технологии слотов и сигналов.
Слот -- метод некоторого класса -- наследника QObject, обрабатывающий некоторой событие, произошедшее с компонентой UI.
Сигнал -- абстракция. Можно воспринимать как событие, произошедшее с компонентой UI или с каким-либо другим классом. Синтаксис описания такой же, как у метода класса.
Слоты соединяются с сигналами посредством метода QObject::connect.
Пример приложения, в котором создается одна кнопка (виджет QPushButton) и сигнал clicked() этой кнопки (этот сигнал посылается при нажатии на кнопку) соединяется со слотом close() главного окна, что приведёт к закрытию окна.
#include<QApplication>
#include<QMainWindow>
#include<QPushButton>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QMainWindow * Window = new QMainWindow;
QPushButton * QuitButton = new QPushButton("Quit", Window);
QuitButton->setGeometry(20, 20, 100, 20);
QObject::connect(QuitButton, SIGNAL(clicked()),
Window, SLOT(close()));
Window->show();
return a.exec();
}
В реальности использование технологии слотов и сигналов не ограничивается разработкой GUI. По сути, эта технология предоставляет универсальный способ взаимодействия объектов, которые ничего не знаю друг о друге.