将附加参数捆绑到Qt4样式QDBusConnection :: connect()信号/槽连接

时间:2015-11-13 14:38:02

标签: c++ qt dbus qdbus

我正在使用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风格的连接中,可以使用lambdas执行类似的操作:

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 个答案:

没有答案