dbus发送到QDBus程序示例
问题描述:
我试图通过dbus-send发送一条消息到这个小例子程序。 但它未接收:dbus发送到QDBus程序示例
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
答
我已经找到了答案,而写的问题,但我反正写的问题。有些人可能会觉得它有用。
dbus-send --session --dest=dbustester.test --type=method_call/dbustester.test.slot_foo
我忘了--dest参数。 :>