2016-01-08 47 views
1

我試圖連接到從的ObjectManager使用下面的代碼InterfacesAdded信號:C++的Qt的DBus沒有這樣的信號InterfacesAdded

UDisks::UDisks(QObject *parent) : QObject(parent), disks(UD_SERVICE, 
    UD_PATH, UD_INTERFACE_OBJECT_MANAGER, QDBusConnection::systemBus()) 
{ 
    qDBusRegisterMetaType<InterfaceList>(); 
    qDBusRegisterMetaType<ManagedObjectList>(); 

    connect(&disks, SIGNAL(InterfacesRemoved(QDBusObjectPath, QStringList)), this, SLOT(mediaRemoved(QDBusObjectPath, QStringList))); 
    connect(&disks, SIGNAL(InterfacesAdded(QDBusObjectPath, InterfaceList)), this, SLOT(mediaAdded(QDBusObjectPath,InterfaceList))); 

} 

當我運行的代碼,它與下面的錯誤出現:

QObject::connect: No such signal org::freedesktop::DBus::ObjectManager::InterfacesAdded(QDBusObjectPath, InterfaceList) 

下面是InterfaceList typedef的:

typedef QMap<QString, QMap<QString, QVariant>> InterfaceList; 

回答

1

通過調試QtDBusVi壺我能夠通過使用此代碼,找到解決我的問題:

QDBusConnection connection(QDBusConnection::systemBus()); 
connection.connect(UD_SERVICE, UD_PATH, UD_INTERFACE_OBJECT_MANAGER, "InterfacesAdded", this, SLOT(mediaAdded(QDBusObjectPath,InterfaceList))); 

原來我需要創建使用QDbusConnection類,而不是使用的QObject的連接方法信號的連接。

相關問題