#include #include #include class Test : public QObject { Q_OBJECT; Q_CLASSINFO("D-Bus Interface", "test.Test"); public Q_SLOTS: void emitSignal1(const QString &s) { Q_EMIT signal1(s); } Q_SIGNALS: void signal1(const QString &s); }; class SubTest : public Test { Q_OBJECT; Q_CLASSINFO("D-Bus Interface", "test.SubTest"); public Q_SLOTS: void emitSignal2(const QString &s) { Q_EMIT signal2(s); } Q_SIGNALS: void signal2(const QString &s); }; int main(int argc, char **argv) { QCoreApplication app(argc, argv); QDBusConnection connection = QDBusConnection::sessionBus(); connection.registerService("test.Test"); Test base; // signal1 works connection.registerObject("/base", &base, QDBusConnection::ExportAllContents); SubTest sub; // signal1 isn't emitted via D-Bus, slot *is* invoked, signal2 works connection.registerObject("/sub", &sub, QDBusConnection::ExportAllContents); return app.exec(); } #include "play.moc"