如何在 qt 4.8 中通过 dbus 接收 QList<QVariantMap>?
Posted
技术标签:
【中文标题】如何在 qt 4.8 中通过 dbus 接收 QList<QVariantMap>?【英文标题】:How do I receive QList<QVariantMap> over dbus in qt 4.8? 【发布时间】:2020-06-04 23:58:09 【问题描述】:我有 C++ 代码与另一个进程通信,该进程返回一个字符串->变体映射列表,换句话说就是一个QList<QVariantMap>
。在 QT5 中,我可以解组 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 中做同样的事情?
【问题讨论】:
【参考方案1】:一位同事帮助了我。答案是把它放在某个头文件中。
Q_DECLARE_METATYPE (QList<QVariantMap>);
【讨论】:
以上是关于如何在 qt 4.8 中通过 dbus 接收 QList<QVariantMap>?的主要内容,如果未能解决你的问题,请参考以下文章
dbus_connection_send_with_reply 超时
如何在 Tornado 中通过 websocket 传输 .png 或 .jpg 文件