您的位置:首页 > 理论基础 > 数据结构算法

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

2011-10-27 10:31 330 查看
     参考文章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;

};

QByteArray Car::SayHello()

{

ttt t1;
t1.a =12; t1.b=true; t1.c=33;

int size=sizeof(t1);
char *pchar=new char(size);
memcpy(pchar,&t1,size);

QByteArray b1;
b1.append(pchar,size);

return b1;

}

//----------------------------------------------

接收端处理:

QByteArray vec;
vec=car->SayHello();

t2=(ttt*)vec.data();

以上都是 qdbus的  adapter与 interface方式 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息