qdbus - 无法使用struct参数连接到dbus信号

时间:2013-12-20 21:54:53

标签: qt qdbus

我正在尝试连接到amarok d-bus信号StatusChange(参考:https://xmms2.org/wiki/MPRIS#StatusChange)。接口和结构是可以的,因为我可以在同一个接口连接到简单的信号CapsChange(int),并且可以通过GetStatus dbus方法获取状态,所以这个marshall结构是可以的:

struct AmarokStatus {
    int st1;
    int st2;
    int st3;
    int st4;
};

Q_DECLARE_METATYPE(AmarokStatus)
qDBusRegisterMetaType<AmarokStatus>();

但是打电话的时候:

mInf = new QDBusInterface("org.mpris.MediaPlayer2.amarok", "/Player",
                          "org.freedesktop.MediaPlayer", QDBusConnection::sessionBus(),this);
connect(mInf, SIGNAL(StatusChange(AmarokStatus)), this, SLOT(statusChanged(AmarokStatus)));
connect(mInf, SIGNAL(CapsChange(int)), this, SLOT(capsChange(int)));

我收到了消息:

  

Object :: connect:没有这样的信号   有机::的freedesktop :: MediaPlayer的:: StatusChange(AmarokStatus)

我尝试过SIGNAL(StatusChange(struct))和SIGNAL(StatusChange(QDbusargument))和其他类型但同样的消息

D-Feet说StatusChange的定义是:StatusChange((Int32,Int32,Int32,Int32)的结构),与dbus-monitor相同。信号TrackChange(结构数组)也存在同样的问题。所以我肯定会用connect()方法弄乱一些东西。

0 个答案:

没有答案