1

我是 QT 编程的新手。我正在尝试使用 DBUS 在两个 qt 应用程序之间进行通信,我已经能够创建一个接口适配器并进行如下通信,

  • 在服务器应用程序上注册服务。
  • 连接到客户端的接口对象并调用服务器中的方法。

我的问题是,如果服务器必须向客户端发送回消息,客户端应该创建一个新接口还是有其他方法可以做到这一点?

4

1 回答 1

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()
}
于 2017-01-20T07:24:46.553 回答