使用qt dbus 傳遞複雜資料結構的方法

2021-06-01 06:27:45 字數 445 閱讀 8189

參考文章   如何用dbus-glib傳遞複雜的資料結構

經過多次試驗 qdbusxml2cpp 對諸如 qlist,qstringlist 等高階資料結構支援並不好,無奈之舉,只有用 字元資料這個容器來處理,在qt中對應qbytearray

xml檔案中這樣寫後,qdbusxml2cpp  自動用qbytearray對應 ay ,試驗後得知,byte 陣列很準確的傳遞了。

那麼,byte陣列如何轉成我們需要的結構體呢。請參照下面的**。

傳送端:

#pragma pack(push,1)

struct ttt

;接收端處理:

qbytearray vec;

vec=car->sayhello();

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

以上都是 qdbus的  adapter與 inte***ce方式 

QT D Bus 複雜引數傳遞

網上一搜,關於d bus和qt的資料不少,但是絕大多數都對傳遞自定義資料型別這個問題閉口不談。看來這個有必要寫個文章記錄一下。首先要說的是,我這裡不再介紹d bus和qdbus的基礎知識,本文直擊要點。另外本文參考了kde的一些文件。需求 使用標準的訊號和槽,通過qdbus傳遞自定義的struct或...

窗體間傳遞複雜資料

這些辦法我感覺都不是特別好,會導致父窗體與子窗體耦合過於緊密,對任何乙個窗體的修改需要重新編譯另外乙個窗體。根據 依賴倒置 的原則,通過引入乙個結果物件,就可以避免這種緊耦合,同時也可以傳遞任意複雜的資料。如果需要在子窗體中改變父窗體狀態,也可以在這個結果物件中定義委託與事件來達到目的。我在這裡給出...

窗體間傳遞複雜資料

這些辦法我感覺都不是特別好,會導致父窗體與子窗體耦合過於緊密,對任何乙個窗體的修改需要重新編譯另外乙個窗體。根據 依賴倒置 的原則,通過引入乙個結果物件,就可以避免這種緊耦合,同時也可以傳遞任意複雜的資料。如果需要在子窗體中改變父窗體狀態,也可以在這個結果物件中定義委託與事件來達到目的。我在這裡給出...