dbus-send to QDBus 程序示例

dbus-send to QDBus program example

我尝试通过 dbus-send 向这个小示例程序发送消息。 但是没有收到:

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

return 代码为 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 参数。 :>