Большинство GUI Toolkits в настоящее время используют модель Signals + Slots. Это были Qt и GTK +, если я не ошибаюсь, кто это сделал.
Знаете, виджеты или графические объекты (иногда даже те, которые не отображаются) отправляют сигналы в обработчик основного цикла. Затем обработчик основного цикла вызывает события , обратные вызовы или слоты, назначенные для этого виджета / графического объекта. Обычно есть стандартные (и в большинстве случаев virtual
) обработчики событий, уже предоставленные инструментарием для обработки всех предопределенных сигналов, поэтому, в отличие от предыдущих проектов, когда разработчику приходилось писать весь основной цикл и обработчик для каждого сообщения самостоятельно (подумайте WINAPI), разработчик должен беспокоиться только о сигналах, которые ему нужны для реализации новых функций.
Теперь, насколько я знаю, этот дизайн используется в большинстве современных инструментов. Есть Qt, GTK +, FLTK и т. Д. Есть Java Swing. В C # даже есть языковая функция (события и делегаты), и Windows Forms была разработана для этого дизайна. Фактически, за последнее десятилетие этот дизайн для программирования GUI стал своего рода неписаным стандартом. Так как это увеличивает производительность и обеспечивает большую абстракцию.
Тем не менее, мой вопрос:
Есть ли альтернативный дизайн, параллельный или практичный для современного программирования GUI?
Т.е. дизайн Signals + Slots - единственный практичный в городе? Реально ли программирование GUI с любым другим дизайном? Существуют ли какие-либо современные (желательно успешные и популярные) GUI-инструментарии, основанные на альтернативном дизайне?
std::function
, не асинхронный сигнал. Кроме того, WinAPI это обеспечить ,DefWindowProc
который обрабатывает сообщения Windows , как реализация по умолчанию. Итак, я хочу сказать, что ваш вопрос основан на некорректной логике.