1

DBus インターフェイスのプロパティを取得する必要があるので、取得しましたinterface.property(name)。それは QVariant を返しますが、QVariant が返すことができるマップは のみですがQMap<QString, QVariant>、私は が必要QMap<QString, QDBusVariant>です。私は何をすべきか?

4

2 に答える 2

1

QVariant::toQDBusVariant()本質的かつ正当な方法がないため、この方法を探していると思います。

T QVariant:: value() const

テンプレート型 T に変換された格納値を返します。型を変換できるかどうかを確認するには、canConvert() を呼び出します。値を変換できない場合は、デフォルトで構築された値が返されます。

タイプ T が QVariant でサポートされている場合、この関数は toString()、toInt() などとまったく同じように動作します。

ユースケースに応じて、マップを一度に再構築するか、外出先で好みのタイプに変換します。いずれにせよ、上記の例に示すように、このメカニズムを使用します。

QVariant myVariant;
...
QDBusVariant dbusVariant;
if (myVariant.canConvert<QDBusVariant>())
    dbusVariant = myVariant.value<QDBusVariant>();

QDBusVariantの例が示すように移動することもできます。

// retrieve the D-Bus variant
QDBusVariant dbusVariant = qvariant_cast<QDBusVariant>(v);
于 2014-12-19T21:05:11.840 に答える