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

     参考文章http://blog.csdn.net/cuijpus/article/details/2295306   如何用dbus-glib传递复杂的数据结构

    经过多次试验 qdbusxml2cpp 对诸如 QList  ,QStringList 等高级数据结构支持并不好,无奈之举,只有用 字符数据这个容器来处理,在qt中对应QByteArray

         
      
    

   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方式 

你可能感兴趣的:(数据结构,qt,interface,byte,struct,xml)