我尝试通过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
答案 0 :(得分:3)
我在写这个问题时找到了答案,但无论如何我写了这个问题。有些人可能觉得它很有用。
dbus-send --session --dest=dbustester.test --type=method_call / dbustester.test.slot_foo
我忘记了 - 最大的争论。产品:&gt;