我如何在 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>);
我有与另一个进程通信的 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>);