связь между клиентом сервера в qt dbus

Я новичок в программировании QT. Я пытаюсь установить связь между двумя приложениями qt, используя DBUS. Мне удалось создать адаптер интерфейса и общаться следующим образом:

  • Регистрация сервиса на сервере приложения.
  • подключение к объекту интерфейса на стороне клиента и вызов методов на сервере.

Мой вопрос: если сервер должен отправлять обратно сообщения клиенту, должен ли клиент создать новый интерфейс или есть ли другой способ сделать это?

0

Решение

D-Bus имеет сигналы (не сигналы Qt, но они отображаются на сигналы при использовании с QDBusAbstractAdaptor).

Этот пример показывает объект D-Bus сервера, который может отправлять уведомления клиентам:

class MainApplicationAdaptor: public QDBusAbstractAdaptor
{
Q_OBJECT
Q_CLASSINFO("D-Bus Interface", "org.kde.DBus.MainApplication")
Q_PROPERTY(QString caption READ caption WRITE setCaption)
Q_PROPERTY(QString organizationName READ organizationName)
Q_PROPERTY(QString organizationDomain READ organizationDomain)

...

signals:
void aboutToQuit();
void mainWindowHasFocus();
};

Определение интерфейса:

interface org.kde.DBus.MainApplication
{
property readwrite STRING caption
property read STRING organizationName
property read STRING organizationDomain

method quit() annotation("org.freedesktop.DBus.Method.NoReply", "true")
method reparseConfiguration()
method mainWindowObject(out STRING)
method disableSessionManagement(in BOOLEAN enable)

signal aboutToQuit()
signal mainWindowHasFocus()
}
0

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

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

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