Шаг 10.
Библиотека Qt.
Механизм сигналов и слотов

    На этом шаге рассмотрим механизм сигналов и слотов.

    Элементы графического интерфейса определенным образом реагируют на действия пользователя и посылают сообщения. Классы, описывающие объекты, способные реагировать на действия пользователей, содержат в своем описании специальный макрос - Q_OBJECT.

    Cпециальный препроцессор MOC (Meta Object Compiler, метаобъектный компилятор) анализирует классы на наличие макроса Q_OBJECT в их определении и внедряет в отдельный файл всю необходимую дополнительную информацию. Это происходит автоматически, без непосредственного участия разработчика.

    Подобная операция автоматического создания кода не противоречит привычному процессу программирования на C++. MOC записывает всю необходимую дополнительную информацию в отдельный файл, содержимое которого может быть проигнорировано.

    Макрос Q_OBJECT должен располагаться сразу на следующей строке после ключевого слова class с определением имени класса. После макроса не должно стоять точки с запятой. Внедрять макрос в опреде-ление класса имеет смысл в тех случаях, когда созданный класс использует механизм сигналов и слотов или если ему необходима информация о свойствах.

    Механизм сигналов и слотов полностью замещает старую модель функций обратного вызова, он очень гибок и полностью объектно-ориентирован. Сигналы и слоты — это краеугольный концепт программирования с использованием Qt, позволяющий соединить вместе несвязанные друг с другом объекты.

    Каждый унаследованный от QObject класс способен отправлять и получать сигналы. Эта особенность идеально вписывается в концепцию объектной ориентации и не противоречит человеческому восприятию. Представьте себе ситуацию: у вас звонит телефон, и вы реагируете на это снятием трубки. На языке сигналов и слотов подобную ситуацию можно описать следующим образом: объект "телефон" выслал сигнал "звонок", на который объект "человек" отреагировал слотом "снятия трубки".

    Преимущества использования механизма сигналов и слотов:

    К недостаткам можно отнести:

    На следующем шаге рассмотрим определение сигнала.




Предыдущий шаг Содержание Следующий шаг