dbus发送到QDBus程序示例

问题描述:

我试图通过dbus-send发送一条消息到这个小例子程序。 但它未接收:dbus发送到QDBus程序示例

dbus-send --session --type=method_call/dbustester.test.slot_foo 

返回代码是0并且不消息被打印到控制台。

以下是源代码。

的main.cpp

#include <QtCore/QCoreApplication> 
#include <QtCore/QDebug> 
#include <QtDBus/QtDBus> 
#include <Example.h> 

int main(int argc, char **argv) 
{ 
    QCoreApplication app(argc, argv); 

    Example *e = new Example(); 
    e->setupDBus(); 

    return app.exec(); 
} 

example.h文件

#include <QtCore/QCoreApplication> 
#include <QtCore/QDebug> 
#include <QtDBus/QtDBus> 

class Example : public QObject 
{ 
    Q_OBJECT 
    Q_CLASSINFO("D-Bus Interface", "dbustester.test") 
public: 

    Example(QObject* parent = NULL) : 
     QObject(parent) 
    { 
    } 

    void setupDBus() 
    { 
     QDBusConnection session = QDBusConnection::sessionBus(); 

     if (!session.isConnected()) 
     { 
      qFatal("Cannot connect to the D-Bus session bus."); 
      return; 
     } 

     session.connect("", "/", "dbustester.test", "slot_foo", this, SLOT(slot_foo(void))); 

     if(!session.registerObject("/", this, QDBusConnection::ExportScriptableContents)) { 
      qFatal("Cannot registerObject."); 
      return; 
     } 

     if(!session.registerService("dbustester.test")) { 
      qFatal("Cannot registerObject."); 
      return; 
     } 
    } 

public slots: 

    Q_SCRIPTABLE void slot_foo() 
    { 
     qDebug() << "request received"; 
    } 
}; 

体形:

qmake -project 
echo "CONFIG += qdbus" >> *.pro 
qmake 

我已经找到了答案,而写的问题,但我反正写的问题。有些人可能会觉得它有用。

dbus-send --session --dest=dbustester.test --type=method_call/dbustester.test.slot_foo 

我忘了--dest参数。 :>