如何在 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&lt;QVariantMap&gt;。在 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 文件

如何在 Qt5 中通过 http 连接到 PUSH 服务器

如何在 Qt 应用程序中通过终端命令运行分离的应用程序?

如何在 MSYS2 中通过 CMake 构建 c++ Qt5 应用程序

如何在 Chrome 中通过 nativeMessaging 发送/接收短信?