dbus-send to QDBus 程序示例
dbus-send to QDBus program example
我尝试通过 dbus-send 向这个小示例程序发送消息。
但是没有收到:
dbus-send --session --type=method_call / dbustester.test.slot_foo
return 代码为 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 参数。 :>
我尝试通过 dbus-send 向这个小示例程序发送消息。 但是没有收到:
dbus-send --session --type=method_call / dbustester.test.slot_foo
return 代码为 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 参数。 :>