Добавьте дополнительный аргумент к соединению сигнал / слот QDBusConnection::connect() в стиле Qt4

Я работаю с QtDbus и мне нужно обработать сигнал DBus. Я делаю это, подключая сигнал DBus к слоту Qt следующим образом:

bool res = QDBusConnection::systemBus().connect(kBusName, adapterPath, kInterfaceName,
        QLatin1String("PropertiesChanged"),
        this, SLOT(_handlePropertyChange(const QString &, PropertiesList , const QStringList &))); 

Теперь, поскольку в одном слоте Qt будет обрабатываться несколько сигналов устройств DBus, я хотел бы отправить некоторую дополнительную информацию (адрес устройства, который я имею в момент соединения) с этим сигналом.

В соединениях в стиле Qt5 можно сделать что-то подобное с лямбдами:

quint64 address;
bool res = QDBusConnection::systemBus().connect(kBusName, adapterPath, kInterfaceName,
        QLatin1String("PropertiesChanged"),
        this, [address, this](const QString & arg1, PropertiesList arg2, const QStringList &arg3) {
            _handlePropertyChange(const QString & arg1, PropertiesList arg2, const QStringList &arg3, address)
        }); //just an example of lambda connection, won't compile 

Но для QDBusConnection нет доступных соединений в стиле Qt5, и я понимаю это, поскольку эти соединения являются динамическими.

Итак, вопрос: как я могу связать дополнительный аргумент с каждым QDBusConnection::connect()?

В идеале я хотел бы иметь возможность сделать что-то вроде:

quint64 address;
bool res = QDBusConnection::systemBus().connect(kBusName, adapterPath, kInterfaceName,
        QLatin1String("PropertiesChanged"),
        this, SLOT(_handlePropertyChange(const QString &, PropertiesList , const QStringList &, quint64 adr = address /* bundle address here */)));

0 ответов

Другие вопросы по тегам