Использование адаптеров Qt D-Bus
Адаптеры — это специальные классы, которые прикрепляются к любому классу, производному от QObject, и предоставляют интерфейс во внешний мир с использованием D-Bus. Адаптеры предназначены для лёгких классов, основная задача которых — перенаправлять вызовы к реальному объекту и от него, возможно, валидируя или преобразуя входные данные из внешнего мира и, таким образом, защищая реальный объект.
В отличие от множественного наследования, адаптеры могут быть добавлены к любому объекту в любое время (но не удалены), что обеспечивает большую гибкость при экспорте существующих классов. Ещё одно преимущество адаптеров — возможность предоставлять сходную, но не идентичную функциональность в методах с одинаковыми именами в разных интерфейсах, что часто встречается при добавлении новой версии стандартного интерфейса к объекту.
Для использования адаптера необходимо создать класс, который наследуется от QDBusAbstractAdaptor. Поскольку это стандартный класс, производный от QObject, макрос Q_OBJECT должен присутствовать в объявлении, а исходный файл должен обрабатываться инструментом moc. Класс также должен содержать одну запись Q_CLASSINFO с именем "D-Bus Interface", указывающую, какой интерфейс он экспортирует. Только одна запись на класс поддерживается.
Любой публичный слот в классе будет доступен через шину по сообщениям типа MethodCall. (См. Объявление слотов в адаптерах D-Bus для получения дополнительной информации). Сигналы в классе будут автоматически перенаправляться через D-Bus. Однако не все типы допускаются в качестве параметров сигналов или слотов: см. Система типов Qt D-Bus для получения дополнительной информации.
Также любое свойство, объявленное с помощью Q_PROPERTY, будет автоматически экспонироваться через интерфейс Свойства на D-Bus. Поскольку система свойств QObject не позволяет объявлять только для чтения свойства, невозможно объявлять свойства, доступные только для записи, с помощью адаптеров.
Дополнительная информация:
- Объявление слотов в адаптерах D-Bus
- Объявление сигналов в адаптерах D-Bus
- Система типов Qt D-Bus
- Пример адаптера D-Bus
См. также QDBusAbstractAdaptor.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/archives/qt-5.6/usingadaptors.html