Здравствуйте. Столкнулся с такой проблемой. У меня есть класс DBusIntegration:
dbusintegration.h
#ifndef DBUSINTEGRATION_H
#define DBUSINTEGRATION_H
#include <QDBusAbstractAdaptor>
class DBusIntegration : public QDBusAbstractAdaptor {
Q_CLASSINFO("D-Bus Interface", "org.plainDE.actions")
public:
void init();
DBusIntegration(QString service,
QString path,
QString interfaceName,
QObject* parent);
};
#endif // DBUSINTEGRATION_H
dbusintegration.cpp
#include "dbusintegration.h"
#include <QDBusConnection>
#include <QDBusConnectionInterface>
#include <QDebug>
DBusIntegration::DBusIntegration(QString service,
QString path,
QString interfaceName,
QObject* parent) : QDBusAbstractAdaptor(parent) {
QDBusConnection bus = QDBusConnection::sessionBus();
bus.registerService(service);
bus.registerObject(path,
interfaceName,
parent,
QDBusConnection::ExportAllSlots);
}
Из другого файла:
DBusIntegration db("org.plainDE.plainPanel", "/Actions", "org.plainDE.actions", this);
Открываю qdbusviewer. Сервис действительно появился, по правильному пути, но вот с интерфейсами беда. Их почему-то два. И даже при том, что из другого Qt приложения методы работают, все равно это неправильно (я собрался также реализовывать org.kde.StatusNotifierWatcher, и другие приложения не понимают 2 интерфейса с одним именем).
Если я убираю прямое указание имени интерфейса:
DBusIntegration db("org.plainDE.plainPanel", "/Actions", this);
, то ситуация лучше. Появляются два интерфейса local.plainPanel.panel и org.qtproject.Qt.QWidget. Но если при взаимодействии двух моих приложений, меня это устраивает, то org.kde.StatusNotifierWatcher, естественно должно быть правильное имя интерфейса (все тот же org.kde.StatusNotifierWatcher).
Подскажите, пожалуйста, что я делаю не так, почему появляются два интерфейса с одинаковым именем? Спасибо.