Dbus訊號傳遞之結構體篇

2021-06-09 02:19:57 字數 1189 閱讀 7922

廢話:

工作上用到了,開始也不知道怎麼弄,網上也沒有現成的例子,只好自己搞了,不廢話。

如果你的demo已經能夠進行正常的方法呼叫和訊號發射,那麼你可以繼續,否則,你還是先調通了那些再說。

這裡只簡單羅列需要改動的地方,不提供詳細的做法

需要改動的地方

這裡假設我的結構體是:

typedef struct passstruct

passstruct;

1.在編寫的gobject檔案的g_signal_new函式裡修改(也可能你已經封裝在別的地方了)

signalid = g_signal_new (

"signalname",

g_object_class_type(klass),

g_signal_run_last | g_signal_detailed,

0, null,null,

g_cclosure_marshal_void__string, g_type_none, 1,

//g_type_string); //引數型別

dbus_type_g_uchar_array);//使用這個型別

2.在發射訊號的函式裡,這樣書寫

passstruct pa;

memset(&pa,0,sizeof(pa));

pa.id=1000;

strcpy(pa.p,"ccccc\n");

garray *pass= null;

pass = g_array_sized_new(false,true,sizeof(int),sizeof(pa));

//memcpy(kotei_junz->data, &pa, sizeof(pa));

g_signal_emit( obj,signalid,0,pass );

g_array_free(pass,true);

3.修改客戶端
dbus_g_proxy_add_signal (remotevalue,"signalname",dbus_type_g_uchar_array,g_type_invalid);

就這些,視具體**而定

Qt 訊號槽傳遞結構體引數

1 需要註冊結構體引數,在結構體中宣告結束的地方加上結構體註冊。typedef struct s exceptionnotifydata exceptionnotifydata q declare metatype exceptionnotifydata 2 訊號定義 signals void si...

Qt訊號槽傳遞自定義結構體

qt的訊號和槽可以傳遞int double等c 常用型別變數,也可以傳遞qvector qmap等qt的容器類 當然也可以傳遞qt定義的型別 那麼qt的訊號和槽如何傳遞自定義的結構體呢。首先在定義結構體的同時需要使用q declare metatype。通過這個巨集定義可以將自定義的型別註冊到qt的...

C語言筆記之結構體篇

1 c語言允許使用者自己建立由不同型別資料組成的組合型的資料結構,稱為結構體。2 一般形式 struct 結構體名 花括號內是該結構體所包括的子項,稱為結構體的成員。3 型別名 成員名 成員表列 也稱為 域表 每乙個成員是結構體中的乙個域。成員名命名規則與變數名相同。成員可以屬於另乙個結構體型別。4...