我在QT 5.7中的DBUS有问题。

我收到一个变体,并且在该变体内部我知道有一个QVariantMap(即,如果QMapQVariant索引,则为strings)。

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

至于现在,我所做的是

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


但我不确定这种方法,也不喜欢静态转换。有没有其他选择?

最好的祝福

c&#43;&#43; - QVariant到QDBusArgument-LMLPHP

编辑:

发表评论后,我能够编写一个“更精细”的版本,qith qdbus_cast

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


但是,这没有回答我的问题,因为最重要的部分是关于static_cast(以及是否有避免的方法,因为它是不安全的)。

最佳答案

QVariant类为此提供了一种方法,请参见toMap()

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

10-06 00:54