参考文章http://blog.youkuaiyun.com/cuijpus/article/details/2295306 如何用dbus-glib传递复杂的数据结构
经过多次试验 qdbusxml2cpp 对诸如 QList<mystruct> ,QStringList 等高级数据结构支持并不好,无奈之举,只有用 字符数据这个容器来处理,在qt中对应QByteArray
<method name="SayHello">
<arg name="my_rtn" type="ay" direction="out" />
</method>
xml文件中这样写后,qdbusxml2cpp 自动用QByteArray对应 ay ,试验后得知,byte 数组很准确的传递了。
那么,byte数组如何转成我们需要的结构体呢。请参照下面的代码。
发送端:
#pragma pack(push,1)
struct ttt
{
int a;
bool b;

在Qt环境中,通过D-Bus传递复杂数据结构如QList<mystruct>或QStringList时遇到问题,qdbusxml2cpp工具支持有限。采用QByteArray作为中间容器可以解决这个问题。发送端将结构体转换为QByteArray,接收端再从字节数据还原。示例代码展示了如何将ttt结构体转换为QByteArray并进行传递。
最低0.47元/天 解锁文章
1362

被折叠的 条评论
为什么被折叠?



