Сигналы и слоты

16-09-2023

Сигналы и слоты — это конструкция языка программирования, используемая в Qt, которая позволяет реализовать шаблон «наблюдатель», минимизируя написание повторяющегося кода. Концепция заключается в том, что компонент (часто виджет) может посылать сигналы, содержащие информацию о событии (например: был выделен текст «слово», была открыта вторая вкладка). В свою очередь другие компоненты могут принимать эти сигналы посредством специальных функций — слотов. Система сигналов и слотов хорошо подходит для описания Графического интерфейса пользователя. Также механизм сигналов/слотов может быть применён для асинхронного ввода/вывода (включая сокеты, pipe, устройства с последовательным интерфейсом, др.) или уведомления о событиях. В библиотеке Qt благодаря Метаобъектному компилятору отпадает необходимость писать код регистрации/отрегистрации/вызова, так как эти шаблонные участки кода генерируются автоматически.

Альтернативные подходы

Существуют реализации системы сигналов/слотов на основе шаблонов C++. Их преимущество в отсутствии необходимости использовать Метаобъектный компилятор, как это реализовано в Qt.

Примеры:

  • libsigc++;
  • sigslot;
  • Signals;
  • boost.signals;
  • Cpp::Events;
  • Platinum;
  • JBroadcaster.

В языке программирования C# есть похожая конструкция с другой терминологией и синтаксисом: события играют роль сигналов, а делегаты — роль слотов. Другая реализация сигналов существует для c-sigslot.

Ссылки

  • Signals and slots из официальной документации Qt.
  • Signals and slots из документации к Boost.


Сигналы и слоты.

© 2011–2023 stamp-i-k.ru, Россия, Барнаул, ул. Анатолия 32, +7 (3852) 15-49-47