我需要获取DBus接口(interface)的属性,所以我做了interface.property(name)。那会返回一个QVariant,但是QVariant可以返回的映射只是QMap<QString, QVariant>,而我需要QMap<QString, QDBusVariant>。我该怎么办?

最佳答案

我认为您正在寻找此方法,因为没有固有和正确的QVariant::toQDBusVariant()方法:

根据您的用例,您可以一次性重建 map ,也可以在旅途中将其转换为首选类型。无论哪种方式,您都可以使用如上例所示的这种机制:

QVariant myVariant;
...
QDBusVariant dbusVariant;
if (myVariant.canConvert<QDBusVariant>())
    dbusVariant = myVariant.value<QDBusVariant>();
您还可以按照QDBusVariant示例所示进行操作:
// retrieve the D-Bus variant
QDBusVariant dbusVariant = qvariant_cast<QDBusVariant>(v);

关于c++ - Qt DBus属性转换为 map ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27573550/

10-09 13:32