#c #qt #dbus #qdbus
#c #qt #dbus #qdbus
Вопрос:
Если я понимаю, метод registerObject можно использовать только один раз по одному и тому же пути, даже если объекты имеют разные интерфейсы в Q_ClassInfo.
Правильно ли это?
Ответ №1:
Да, это правильно. Но если вы хотите зарегистрировать несколько объектов по одному и тому же пути, вы можете сделать это, объявив эти объекты (скажем, childX, childY) дочерними объектами объекта, скажем, ParentObject, а затем вызвать register object как:
registerObject(yourPath, parentObject, QDBusConnection::ExportAdaptors)
Это приведет к регистрации объектов childX и childY в path yourPath
Примечание: дочерние элементы и дочерние элементы должны наследовать QDBusAbstractAdaptor
Комментарии:
1. Работает ли это? Мне не удалось создать экземпляр объекта с несколькими интерфейсами для Telepathy API (из спецификаций
Client_Handler.xml
иClient.xml
сгенерированных привязок, какqdbusxml2cpp -a Client Client.xml
в qt5.5).2. Чтобы немного прояснить это: 1.
class ParentClass : public QObject, public QDBusContext
имеетchildX' and 'childY' 2. the
дочерние элементы private, аChildY
классы являются производными отQDBusAbstractAdaptor
(производного) класса 3. при создании экземпляраChildX
иChildY
использовании в качестве родительскогоparentObject
для них 4. зарегистрируйтесьparentObject
в D-Bus, как описано в ответе выше