【问题标题】:dbus-send to QDBus program exampledbus-send to QDBus 程序示例
【发布时间】:2015-12-25 18:24:03
【问题描述】:

我尝试通过 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();
}

例子.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

【问题讨论】:

    标签: qt dbus


    【解决方案1】:

    我在写问题时找到了答案,但我还是写了这个问题。有些人可能会觉得它很有用。

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

    我忘记了 --dest 参数。 :>

    【讨论】:

      猜你喜欢
      • 2016-07-10
      • 2015-02-28
      • 2011-04-11
      • 2021-09-29
      • 2014-09-02
      • 1970-01-01
      • 1970-01-01
      • 2013-07-02
      • 1970-01-01
      相关资源
      最近更新 更多