QVariant到QDBusArgument

时间:2016-09-23 14:37:22

标签: c++ qt dbus

我在QT 5.7中遇到了DBUS问题。

我收到了一个变体,在该变体中我知道有一个QVariantMap(即QMap如果QVariantstrings编制索引。

我在邮件中收到的是QVariant对象。我知道里面有一个QDBusArgument(调试器这样说,见附图),但我不知道提取它的正确方法是什么,也不知道QVariantMap。

就目前而言,我所做的是

QDBusArgument *darg = static_cast<QDBusArgument*>((void *)vm.data());
QVariantMap elems;
*darg >> elems;

但是我不确定这种方法,也不喜欢静态演员。还有其他选择吗?

祝你好运

What the debugger say

编辑:

经过一次评论,我能够写出一个“更好”的版本,qith qdbus_cast

QVariantMap elems = qdbus_cast<QVariantMap>(*(static_cast<QDBusArgument*>((void *)vm.data())));

然而,这并没有回答我的问题,因为最重要的部分是关于static_cast(如果有办法避免它,因为它是不安全的)。

1 个答案:

答案 0 :(得分:1)

QVariant类有一个方法,请参阅toMap()

正如文档所述,另请参阅canConvert()convert()