【问题标题】:communication between server client in qt dbusqt dbus中服务器客户端之间的通信
【发布时间】:2017-06-05 01:32:22
【问题描述】:

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

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

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

【问题讨论】:

    标签: c++ qt dbus qdbus qtdbus


    【解决方案1】:

    D-Bus 有信号(不是 Qt 信号,但如果与 QDBusAbstractAdaptor 一起使用,它们会映射到信号)。

    This example 显示了一个可以向客户端发送通知的服务器 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()
    }
    

    【讨论】:

      猜你喜欢
      • 2021-02-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多