我如何在 qt 4.8 中通过 dbus 接收 QList<QVariantMap>?

How do I receive QList<QVariantMap> over dbus in qt 4.8?

我有与另一个进程通信的 C++ 代码,其中 returns 一个字符串-> 变体映射列表,换句话说 QList<QVariantMap>。在 QT5 中我可以 demarshall QDbusArgument reply 如下:

    QList<QVariantMap> replyMap = qdbus_cast<QList<QVariantMap>>(reply.arguments().first());

这不适用于 QT4.8。我怀疑我需要正确调用 qDbusRegisterMetaType,但尽我所能,我无法找出神奇的组合。编译器响应:

..../include/QtCore/qmetatype.h:169:79: error: ‘qt_metatype_id’ is not a member of ‘QMetaTypeId<QList<QMap<QString, QVariant> > >’

不幸的是,我们的代码库目前停留在 QT4.8 上,因此无法升级到 QT5。

如何在 qt4 中做同样的事情?

一位同事帮助了我。答案是把它放在某个头文件中。

Q_DECLARE_METATYPE (QList<QVariantMap>);