Добавьте дополнительный аргумент к соединению сигнал / слот 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 */)));