dbus-send到QDBus程序示例

时间:2015-09-28 13:24:58

标签: qt dbus

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

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

1 个答案:

答案 0 :(得分:3)

我在写这个问题时找到了答案,但无论如何我写了这个问题。有些人可能觉得它很有用。

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

我忘记了 - 最大的争论。产品:&gt;