dbus-send to QDBus 程序示例

Posted

技术标签:

【中文标题】dbus-send to QDBus 程序示例【英文标题】:dbus-send to QDBus program example 【发布时间】: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

【问题讨论】:

【参考方案1】:

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

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

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

【讨论】:

以上是关于dbus-send to QDBus 程序示例的主要内容,如果未能解决你的问题,请参考以下文章

dbus-send与QDBusAbstractInterface的对应关系

QDBus 发送 int[]

使用 dbus-send 关闭 Linux

使用 dbus-send 设置/获取属性

Introduction to QtDBus class

启动后将 pid 映射到 qdbus 服务号