2013-03-22 56 views
1

這個問題是在我的腦海了很多天,但我得到清除至今信號發射結構

,如果我試圖發送一個結構的信號說

struct radarStruct 
{ 
    unsigned char *Data; 
    unsigned int rate; 
    unsigned int timeStamp; 
    float timeSec; 
}; 

應我發出信號如

signals: 
    void radarGeneratorData(const radarStruct &); 

signals: 
    void radarGeneratorData(radarStruct *); 

更多:無符號字符*數據呢,信號是否會進行深層複製?

類似的無符號字符*數據如何我可以發送信號。

的朋友請幫我清楚這一點,最好的辦法,通過發送信號的結構&插槽機制..

Thnks提前

+0

檢查答案:http://stackoverflow.com/questions/39495926/qt-signal-slots-sending-a-complete-structure/42875402#42875402 – JaRo 2017-03-18 14:50:01

回答

3

這主要取決於你的需求。

如果要將結構發送到另一個對象並「共享」結構,則需要將結構作爲指針發送,以便在源處反映更改。如果沒有,那麼你會想要將它作爲const ref發送。

對於任何一種方法,記住您需要使用Q_DECLARE_METATYPE(YourStructType),然後才能在信號/插槽參數中使用該結構。

當在例行回調等同過程發生了深刻的副本出現/對,你可以通過具有讀

Signaling failure in qt slots

單線程的溝通和跨線程通信中自己和輸出的不同將再次取決於您的使用情況。