2013-03-22 65 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

单线程的沟通和跨线程通信中自己和输出的不同将再次取决于您的使用情况。