使用qt dbus 传递复杂数据结构的方法

在Qt环境中,通过D-Bus传递复杂数据结构如QList<mystruct>或QStringList时遇到问题,qdbusxml2cpp工具支持有限。采用QByteArray作为中间容器可以解决这个问题。发送端将结构体转换为QByteArray,接收端再从字节数据还原。示例代码展示了如何将ttt结构体转换为QByteArray并进行传递。
摘要由CSDN通过智能技术生成

     参考文章http://blog.csdn.net/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;
int c;
};


QBy

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值