6.0.0-rc4Source

QDBusVirtualObject Class

The QDBusVirtualObject class is used to handle several D-Bus paths with one class. More…

Header#include <QDBusVirtualObject>
CMaketarget_link_libraries(app PRIVATE Nt::DBus)
ModuleNt D-Bus C++ Classes
InheritsQObject

List of all members, including inherited members

Public Functions

QDBusVirtualObject(QObject *parent = nullptr)
~QDBusVirtualObject()
virtual QStringintrospect(const QString &path) const
virtual boolhandleMessage(const QDBusMessage &message, const QDBusConnection &connection)

Detailed Description

Subclass it and implement introspect() and handleMessage(), then register it with QDBusConnection::registerVirtualObject(). With QDBusConnection::SubPath it receives the calls to every path below its own as well, which suits a tree of objects that exist only as data:

class Files : public QDBusVirtualObject {
public:
    QString introspect(const QString &) const override { return QString(); }
    bool handleMessage(const QDBusMessage &m, const QDBusConnection &c) override {
        if (m.member() != "Size")
            return false;
        c.send(m.createReply(QFileInfo(m.path().mid(6)).size()));
        return true;
    }
};

See also QDBusConnection::registerVirtualObject().

Differences from Qt

None.

Member Function Documentation

[explicit] QDBusVirtualObject::QDBusVirtualObject(QObject *parent = nullptr)

Constructs a virtual object with the given parent.

[override] QDBusVirtualObject::~QDBusVirtualObject()

Destroys the virtual object. It is unregistered.

[virtual] bool QDBusVirtualObject::handleMessage(const QDBusMessage &message, const QDBusConnection &connection)

Handles the method call message, which arrived on connection. Returns true if the call was handled, and the function is then responsible for any reply; otherwise returns false and the caller gets an error.

[virtual] QString QDBusVirtualObject::introspect(const QString &path) const

Returns the introspection XML for path: the interface elements only, without the enclosing node element. It may be empty.