廢話:
工作上用到了,開始也不知道怎麼弄,網上也沒有現成的例子,只好自己搞了,不廢話。
如果你的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...