QT-Dbus сигналы / слоты?

Как я могу подключить свой слот QT для ответа на сигналы D-BUS, генерируемые какой-либо сторонней службой?

Правильно ли следующее?

QDBusConnection bus = QDBusConnection::systemBus();
bus.connect("com.me.foo", "/", "com.me.foo.bar", "foo",
this, SLOT(fooSignal()));

1

Решение

Сначала вы должны выяснить, на какой шине зарегистрирована эта служба (система или сеанс). Для сеансовой шины вам нужно изменить QDBusConnection :: systemBus () на QDBusConnection :: sessionBus ()

Чтобы получить правильные значения аргументов для connect (), вам нужно получить имя службы, путь к объекту, интерфейс и имя сигнала.

Самый простой способ выполнить обе задачи — использовать приложение qdbusviewer, которое является частью инструментов Qt dev (qt4-dev-tools или qttools5-dev-tools в Ubuntu). Это позволяет видеть сервисы на обоих автобусах, перемещаться по деревьям объектов и перечислять методы. Свойства и сигналы интерфейсов D-Bus, реализуемые каждым зарегистрированным объектом.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]